brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.2 KiB · 17a8d62 Raw
753 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %t.o4# RUN: %clang %cflags -gdwarf-5 %t.o -o %t.exe5# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=46# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s7 8## This test checks that BOLT handles backward cross CU references for dwarf59## when -fdebug-types-sections is specified.10 11# The assembly was manually modified to do cross CU reference.12 13# POSTCHECK: Type Unit14# POSTCHECK-SAME: version = 0x000515# POSTCHECK: Type Unit16# POSTCHECK-SAME: version = 0x000517# POSTCHECK: Type Unit18# POSTCHECK-SAME: version = 0x000519# POSTCHECK: Type Unit20# POSTCHECK-SAME: version = 0x000521# POSTCHECK: Compile Unit22# POSTCHECK-SAME: version = 0x000523# POSTCHECK: DW_TAG_structure_type [10]24# POSTCHECK: DW_TAG_structure_type [10]25# POSTCHECK: Compile Unit26# POSTCHECK-SAME: version = 0x000527# POSTCHECK: DW_TAG_variable [9]28# POSTCHECK: DW_TAG_variable [12]29# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo")30 31 32# main.cpp33# struct Foo {34#  char *c1;35#  char *c2;36#  char *c3;37# };38# struct Foo2 {39#  char *c1;40#  char *c2;41# };42# int main(int argc, char *argv[]) {43#  Foo f;44#  f.c1 = argv[argc];45#  f.c2 = argv[argc + 1];46#  f.c3 = argv[argc + 2];47#  Foo2 f2;48#  f.c1 = argv[argc + 3];49#  f.c2 = argv[argc + 4];50#  return 0;51# }52 53# helper.cpp54# struct Foo2a {55#   char *c1;56#   char *c2;57#   char *c3;58# };59# struct Foo3 {60#   char *c1;61#   char *c2;62# };63#64# int foo() {65#   Foo2a f;66#   Foo3 f2;67#   return 0;68# }69 70	.text71	.file	"llvm-link"72	.globl	main                            # -- Begin function main73	.p2align	4, 0x9074	.type	main,@function75main:                                   # @main76.Lfunc_begin0:77	.file	1 "/dwarf5-types-backward-cross-reference-test" "main.cpp" md5 0x13f000d932d7bb7e6986b96c183027b978	.loc	1 10 0                          # main.cpp:10:079	.cfi_startproc80# %bb.0:                                # %entry81	pushq	%rbp82	.cfi_def_cfa_offset 1683	.cfi_offset %rbp, -1684	movq	%rsp, %rbp85	.cfi_def_cfa_register %rbp86	movl	$0, -4(%rbp)87	movl	%edi, -8(%rbp)88	movq	%rsi, -16(%rbp)89.Ltmp0:90	.loc	1 12 9 prologue_end             # main.cpp:12:991	movq	-16(%rbp), %rax92	movslq	-8(%rbp), %rcx93	movq	(%rax,%rcx,8), %rax94	.loc	1 12 7 is_stmt 0                # main.cpp:12:795	movq	%rax, -40(%rbp)96	.loc	1 13 9 is_stmt 1                # main.cpp:13:997	movq	-16(%rbp), %rax98	.loc	1 13 14 is_stmt 0               # main.cpp:13:1499	movl	-8(%rbp), %ecx100	.loc	1 13 19                         # main.cpp:13:19101	addl	$1, %ecx102	.loc	1 13 9                          # main.cpp:13:9103	movslq	%ecx, %rcx104	movq	(%rax,%rcx,8), %rax105	.loc	1 13 7                          # main.cpp:13:7106	movq	%rax, -32(%rbp)107	.loc	1 14 9 is_stmt 1                # main.cpp:14:9108	movq	-16(%rbp), %rax109	.loc	1 14 14 is_stmt 0               # main.cpp:14:14110	movl	-8(%rbp), %ecx111	.loc	1 14 19                         # main.cpp:14:19112	addl	$2, %ecx113	.loc	1 14 9                          # main.cpp:14:9114	movslq	%ecx, %rcx115	movq	(%rax,%rcx,8), %rax116	.loc	1 14 7                          # main.cpp:14:7117	movq	%rax, -24(%rbp)118	.loc	1 16 9 is_stmt 1                # main.cpp:16:9119	movq	-16(%rbp), %rax120	.loc	1 16 14 is_stmt 0               # main.cpp:16:14121	movl	-8(%rbp), %ecx122	.loc	1 16 19                         # main.cpp:16:19123	addl	$3, %ecx124	.loc	1 16 9                          # main.cpp:16:9125	movslq	%ecx, %rcx126	movq	(%rax,%rcx,8), %rax127	.loc	1 16 7                          # main.cpp:16:7128	movq	%rax, -40(%rbp)129	.loc	1 17 9 is_stmt 1                # main.cpp:17:9130	movq	-16(%rbp), %rax131	.loc	1 17 14 is_stmt 0               # main.cpp:17:14132	movl	-8(%rbp), %ecx133	.loc	1 17 19                         # main.cpp:17:19134	addl	$4, %ecx135	.loc	1 17 9                          # main.cpp:17:9136	movslq	%ecx, %rcx137	movq	(%rax,%rcx,8), %rax138	.loc	1 17 7                          # main.cpp:17:7139	movq	%rax, -32(%rbp)140	.loc	1 18 2 is_stmt 1                # main.cpp:18:2141	xorl	%eax, %eax142	.loc	1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2143	popq	%rbp144	.cfi_def_cfa %rsp, 8145	retq146.Ltmp1:147.Lfunc_end0:148	.size	main, .Lfunc_end0-main149	.cfi_endproc150                                        # -- End function151	.globl	_Z3foov                         # -- Begin function _Z3foov152	.p2align	4, 0x90153	.type	_Z3foov,@function154_Z3foov:                                # @_Z3foov155.Lfunc_begin1:156	.file	2 "/dwarf5-types-backward-cross-reference-test" "helper.cpp" md5 0x650c984f17ca3a4e7785e30e6ca8f130157	.loc	2 11 0 is_stmt 1                # helper.cpp:11:0158	.cfi_startproc159# %bb.0:                                # %entry160	pushq	%rbp161	.cfi_def_cfa_offset 16162	.cfi_offset %rbp, -16163	movq	%rsp, %rbp164	.cfi_def_cfa_register %rbp165.Ltmp2:166	.loc	2 14 3 prologue_end             # helper.cpp:14:3167	xorl	%eax, %eax168	.loc	2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3169	popq	%rbp170	.cfi_def_cfa %rsp, 8171	retq172.Ltmp3:173.Lfunc_end1:174	.size	_Z3foov, .Lfunc_end1-_Z3foov175	.cfi_endproc176                                        # -- End function177	.section	.debug_info,"G",@progbits,7448148824980338162,comdat178	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit179.Ldebug_info_start0:180	.short	5                               # DWARF version number181	.byte	2                               # DWARF Unit Type182	.byte	8                               # Address Size (in bytes)183	.long	.debug_abbrev                   # Offset Into Abbrev. Section184	.quad	7448148824980338162             # Type Signature185	.long	35                              # Type DIE Offset186	.byte	1                               # Abbrev [1] 0x18:0x37 DW_TAG_type_unit187	.short	33                              # DW_AT_language188	.long	.Lline_table_start0             # DW_AT_stmt_list189	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base190	.byte	2                               # Abbrev [2] 0x23:0x22 DW_TAG_structure_type191	.byte	5                               # DW_AT_calling_convention192	.byte	15                              # DW_AT_name193	.byte	24                              # DW_AT_byte_size194	.byte	1                               # DW_AT_decl_file195	.byte	1                               # DW_AT_decl_line196	.byte	3                               # Abbrev [3] 0x29:0x9 DW_TAG_member197	.byte	12                              # DW_AT_name198	.long	69                              # DW_AT_type199	.byte	1                               # DW_AT_decl_file200	.byte	2                               # DW_AT_decl_line201	.byte	0                               # DW_AT_data_member_location202	.byte	3                               # Abbrev [3] 0x32:0x9 DW_TAG_member203	.byte	13                              # DW_AT_name204	.long	69                              # DW_AT_type205	.byte	1                               # DW_AT_decl_file206	.byte	3                               # DW_AT_decl_line207	.byte	8                               # DW_AT_data_member_location208	.byte	3                               # Abbrev [3] 0x3b:0x9 DW_TAG_member209	.byte	14                              # DW_AT_name210	.long	69                              # DW_AT_type211	.byte	1                               # DW_AT_decl_file212	.byte	4                               # DW_AT_decl_line213	.byte	16                              # DW_AT_data_member_location214	.byte	0                               # End Of Children Mark215	.byte	4                               # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type216	.long	74                              # DW_AT_type217	.byte	5                               # Abbrev [5] 0x4a:0x4 DW_TAG_base_type218	.byte	10                              # DW_AT_name219	.byte	6                               # DW_AT_encoding220	.byte	1                               # DW_AT_byte_size221	.byte	0                               # End Of Children Mark222.Ldebug_info_end0:223	.section	.debug_info,"G",@progbits,5322170643381124694,comdat224	.long	.Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit225.Ldebug_info_start1:226	.short	5                               # DWARF version number227	.byte	2                               # DWARF Unit Type228	.byte	8                               # Address Size (in bytes)229	.long	.debug_abbrev                   # Offset Into Abbrev. Section230	.quad	5322170643381124694             # Type Signature231	.long	35                              # Type DIE Offset232	.byte	1                               # Abbrev [1] 0x18:0x2e DW_TAG_type_unit233	.short	33                              # DW_AT_language234	.long	.Lline_table_start0             # DW_AT_stmt_list235	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base236	.byte	2                               # Abbrev [2] 0x23:0x19 DW_TAG_structure_type237	.byte	5                               # DW_AT_calling_convention238	.byte	17                              # DW_AT_name239	.byte	16                              # DW_AT_byte_size240	.byte	1                               # DW_AT_decl_file241	.byte	6                               # DW_AT_decl_line242	.byte	3                               # Abbrev [3] 0x29:0x9 DW_TAG_member243	.byte	12                              # DW_AT_name244	.long	60                              # DW_AT_type245	.byte	1                               # DW_AT_decl_file246	.byte	7                               # DW_AT_decl_line247	.byte	0                               # DW_AT_data_member_location248	.byte	3                               # Abbrev [3] 0x32:0x9 DW_TAG_member249	.byte	13                              # DW_AT_name250	.long	60                              # DW_AT_type251	.byte	1                               # DW_AT_decl_file252	.byte	8                               # DW_AT_decl_line253	.byte	8                               # DW_AT_data_member_location254	.byte	0                               # End Of Children Mark255	.byte	4                               # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type256	.long	65                              # DW_AT_type257	.byte	5                               # Abbrev [5] 0x41:0x4 DW_TAG_base_type258	.byte	10                              # DW_AT_name259	.byte	6                               # DW_AT_encoding260	.byte	1                               # DW_AT_byte_size261	.byte	0                               # End Of Children Mark262.Ldebug_info_end1:263	.section	.debug_info,"G",@progbits,1175092228111723119,comdat264	.long	.Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit265.Ldebug_info_start2:266	.short	5                               # DWARF version number267	.byte	2                               # DWARF Unit Type268	.byte	8                               # Address Size (in bytes)269	.long	.debug_abbrev                   # Offset Into Abbrev. Section270	.quad	1175092228111723119             # Type Signature271	.long	35                              # Type DIE Offset272	.byte	1                               # Abbrev [1] 0x18:0x37 DW_TAG_type_unit273	.short	33                              # DW_AT_language274	.long	.Lline_table_start0             # DW_AT_stmt_list275	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base276	.byte	2                               # Abbrev [2] 0x23:0x22 DW_TAG_structure_type277	.byte	5                               # DW_AT_calling_convention278	.byte	18                              # DW_AT_name279	.byte	24                              # DW_AT_byte_size280	.byte	2                               # DW_AT_decl_file281	.byte	1                               # DW_AT_decl_line282	.byte	3                               # Abbrev [3] 0x29:0x9 DW_TAG_member283	.byte	12                              # DW_AT_name284	.long	69                              # DW_AT_type285	.byte	2                               # DW_AT_decl_file286	.byte	2                               # DW_AT_decl_line287	.byte	0                               # DW_AT_data_member_location288	.byte	3                               # Abbrev [3] 0x32:0x9 DW_TAG_member289	.byte	13                              # DW_AT_name290	.long	69                              # DW_AT_type291	.byte	2                               # DW_AT_decl_file292	.byte	3                               # DW_AT_decl_line293	.byte	8                               # DW_AT_data_member_location294	.byte	3                               # Abbrev [3] 0x3b:0x9 DW_TAG_member295	.byte	14                              # DW_AT_name296	.long	69                              # DW_AT_type297	.byte	2                               # DW_AT_decl_file298	.byte	4                               # DW_AT_decl_line299	.byte	16                              # DW_AT_data_member_location300	.byte	0                               # End Of Children Mark301	.byte	4                               # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type302	.long	74                              # DW_AT_type303	.byte	5                               # Abbrev [5] 0x4a:0x4 DW_TAG_base_type304	.byte	10                              # DW_AT_name305	.byte	6                               # DW_AT_encoding306	.byte	1                               # DW_AT_byte_size307	.byte	0                               # End Of Children Mark308.Ldebug_info_end2:309	.section	.debug_info,"G",@progbits,12995149649732825572,comdat310	.long	.Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit311.Ldebug_info_start3:312	.short	5                               # DWARF version number313	.byte	2                               # DWARF Unit Type314	.byte	8                               # Address Size (in bytes)315	.long	.debug_abbrev                   # Offset Into Abbrev. Section316	.quad	-5451594423976726044            # Type Signature317	.long	35                              # Type DIE Offset318	.byte	1                               # Abbrev [1] 0x18:0x2e DW_TAG_type_unit319	.short	33                              # DW_AT_language320	.long	.Lline_table_start0             # DW_AT_stmt_list321	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base322	.byte	2                               # Abbrev [2] 0x23:0x19 DW_TAG_structure_type323	.byte	5                               # DW_AT_calling_convention324	.byte	19                              # DW_AT_name325	.byte	16                              # DW_AT_byte_size326	.byte	2                               # DW_AT_decl_file327	.byte	6                               # DW_AT_decl_line328	.byte	3                               # Abbrev [3] 0x29:0x9 DW_TAG_member329	.byte	12                              # DW_AT_name330	.long	60                              # DW_AT_type331	.byte	2                               # DW_AT_decl_file332	.byte	7                               # DW_AT_decl_line333	.byte	0                               # DW_AT_data_member_location334	.byte	3                               # Abbrev [3] 0x32:0x9 DW_TAG_member335	.byte	13                              # DW_AT_name336	.long	60                              # DW_AT_type337	.byte	2                               # DW_AT_decl_file338	.byte	8                               # DW_AT_decl_line339	.byte	8                               # DW_AT_data_member_location340	.byte	0                               # End Of Children Mark341	.byte	4                               # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type342	.long	65                              # DW_AT_type343	.byte	5                               # Abbrev [5] 0x41:0x4 DW_TAG_base_type344	.byte	10                              # DW_AT_name345	.byte	6                               # DW_AT_encoding346	.byte	1                               # DW_AT_byte_size347	.byte	0                               # End Of Children Mark348.Ldebug_info_end3:349	.section	.debug_abbrev,"",@progbits350	.byte	1                               # Abbreviation Code351	.byte	65                              # DW_TAG_type_unit352	.byte	1                               # DW_CHILDREN_yes353	.byte	19                              # DW_AT_language354	.byte	5                               # DW_FORM_data2355	.byte	16                              # DW_AT_stmt_list356	.byte	23                              # DW_FORM_sec_offset357	.byte	114                             # DW_AT_str_offsets_base358	.byte	23                              # DW_FORM_sec_offset359	.byte	0                               # EOM(1)360	.byte	0                               # EOM(2)361	.byte	2                               # Abbreviation Code362	.byte	19                              # DW_TAG_structure_type363	.byte	1                               # DW_CHILDREN_yes364	.byte	54                              # DW_AT_calling_convention365	.byte	11                              # DW_FORM_data1366	.byte	3                               # DW_AT_name367	.byte	37                              # DW_FORM_strx1368	.byte	11                              # DW_AT_byte_size369	.byte	11                              # DW_FORM_data1370	.byte	58                              # DW_AT_decl_file371	.byte	11                              # DW_FORM_data1372	.byte	59                              # DW_AT_decl_line373	.byte	11                              # DW_FORM_data1374	.byte	0                               # EOM(1)375	.byte	0                               # EOM(2)376	.byte	3                               # Abbreviation Code377	.byte	13                              # DW_TAG_member378	.byte	0                               # DW_CHILDREN_no379	.byte	3                               # DW_AT_name380	.byte	37                              # DW_FORM_strx1381	.byte	73                              # DW_AT_type382	.byte	19                              # DW_FORM_ref4383	.byte	58                              # DW_AT_decl_file384	.byte	11                              # DW_FORM_data1385	.byte	59                              # DW_AT_decl_line386	.byte	11                              # DW_FORM_data1387	.byte	56                              # DW_AT_data_member_location388	.byte	11                              # DW_FORM_data1389	.byte	0                               # EOM(1)390	.byte	0                               # EOM(2)391	.byte	4                               # Abbreviation Code392	.byte	15                              # DW_TAG_pointer_type393	.byte	0                               # DW_CHILDREN_no394	.byte	73                              # DW_AT_type395	.byte	19                              # DW_FORM_ref4396	.byte	0                               # EOM(1)397	.byte	0                               # EOM(2)398	.byte	5                               # Abbreviation Code399	.byte	36                              # DW_TAG_base_type400	.byte	0                               # DW_CHILDREN_no401	.byte	3                               # DW_AT_name402	.byte	37                              # DW_FORM_strx1403	.byte	62                              # DW_AT_encoding404	.byte	11                              # DW_FORM_data1405	.byte	11                              # DW_AT_byte_size406	.byte	11                              # DW_FORM_data1407	.byte	0                               # EOM(1)408	.byte	0                               # EOM(2)409	.byte	6                               # Abbreviation Code410	.byte	17                              # DW_TAG_compile_unit411	.byte	1                               # DW_CHILDREN_yes412	.byte	37                              # DW_AT_producer413	.byte	37                              # DW_FORM_strx1414	.byte	19                              # DW_AT_language415	.byte	5                               # DW_FORM_data2416	.byte	3                               # DW_AT_name417	.byte	37                              # DW_FORM_strx1418	.byte	114                             # DW_AT_str_offsets_base419	.byte	23                              # DW_FORM_sec_offset420	.byte	16                              # DW_AT_stmt_list421	.byte	23                              # DW_FORM_sec_offset422	.byte	27                              # DW_AT_comp_dir423	.byte	37                              # DW_FORM_strx1424	.byte	17                              # DW_AT_low_pc425	.byte	27                              # DW_FORM_addrx426	.byte	18                              # DW_AT_high_pc427	.byte	6                               # DW_FORM_data4428	.byte	115                             # DW_AT_addr_base429	.byte	23                              # DW_FORM_sec_offset430	.byte	0                               # EOM(1)431	.byte	0                               # EOM(2)432	.byte	7                               # Abbreviation Code433	.byte	46                              # DW_TAG_subprogram434	.byte	1                               # DW_CHILDREN_yes435	.byte	17                              # DW_AT_low_pc436	.byte	27                              # DW_FORM_addrx437	.byte	18                              # DW_AT_high_pc438	.byte	6                               # DW_FORM_data4439	.byte	64                              # DW_AT_frame_base440	.byte	24                              # DW_FORM_exprloc441	.byte	3                               # DW_AT_name442	.byte	37                              # DW_FORM_strx1443	.byte	58                              # DW_AT_decl_file444	.byte	11                              # DW_FORM_data1445	.byte	59                              # DW_AT_decl_line446	.byte	11                              # DW_FORM_data1447	.byte	73                              # DW_AT_type448	.byte	19                              # DW_FORM_ref4449	.byte	63                              # DW_AT_external450	.byte	25                              # DW_FORM_flag_present451	.byte	0                               # EOM(1)452	.byte	0                               # EOM(2)453	.byte	8                               # Abbreviation Code454	.byte	5                               # DW_TAG_formal_parameter455	.byte	0                               # DW_CHILDREN_no456	.byte	2                               # DW_AT_location457	.byte	24                              # DW_FORM_exprloc458	.byte	3                               # DW_AT_name459	.byte	37                              # DW_FORM_strx1460	.byte	58                              # DW_AT_decl_file461	.byte	11                              # DW_FORM_data1462	.byte	59                              # DW_AT_decl_line463	.byte	11                              # DW_FORM_data1464	.byte	73                              # DW_AT_type465	.byte	19                              # DW_FORM_ref4466	.byte	0                               # EOM(1)467	.byte	0                               # EOM(2)468	.byte	9                               # Abbreviation Code469	.byte	52                              # DW_TAG_variable470	.byte	0                               # DW_CHILDREN_no471	.byte	2                               # DW_AT_location472	.byte	24                              # DW_FORM_exprloc473	.byte	3                               # DW_AT_name474	.byte	37                              # DW_FORM_strx1475	.byte	58                              # DW_AT_decl_file476	.byte	11                              # DW_FORM_data1477	.byte	59                              # DW_AT_decl_line478	.byte	11                              # DW_FORM_data1479	.byte	73                              # DW_AT_type480	.byte	19                              # DW_FORM_ref4481	.byte	0                               # EOM(1)482	.byte	0                               # EOM(2)483	.byte	10                              # Abbreviation Code484	.byte	19                              # DW_TAG_structure_type485	.byte	0                               # DW_CHILDREN_no486	.byte	60                              # DW_AT_declaration487	.byte	25                              # DW_FORM_flag_present488	.byte	105                             # DW_AT_signature489	.byte	32                              # DW_FORM_ref_sig8490	.byte	0                               # EOM(1)491	.byte	0                               # EOM(2)492	.byte	11                              # Abbreviation Code493	.byte	46                              # DW_TAG_subprogram494	.byte	1                               # DW_CHILDREN_yes495	.byte	17                              # DW_AT_low_pc496	.byte	27                              # DW_FORM_addrx497	.byte	18                              # DW_AT_high_pc498	.byte	6                               # DW_FORM_data4499	.byte	64                              # DW_AT_frame_base500	.byte	24                              # DW_FORM_exprloc501	.byte	110                             # DW_AT_linkage_name502	.byte	37                              # DW_FORM_strx1503	.byte	3                               # DW_AT_name504	.byte	37                              # DW_FORM_strx1505	.byte	58                              # DW_AT_decl_file506	.byte	11                              # DW_FORM_data1507	.byte	59                              # DW_AT_decl_line508	.byte	11                              # DW_FORM_data1509	.byte	73                              # DW_AT_type510	.byte	19                              # DW_FORM_ref4511	.byte	63                              # DW_AT_external512	.byte	25                              # DW_FORM_flag_present513	.byte	0                               # EOM(1)514	.byte	0                               # EOM(2)515    .byte   12                              # Abbreviation Code <-- Manually added abbrev decl516    .byte   52                              # DW_TAG_variable517    .byte   0                               # DW_CHILDREN_no518    .byte   2                               # DW_AT_location519    .byte   24                              # DW_FORM_exprloc520    .byte   3                               # DW_AT_name521    .byte   37                              # DW_FORM_strx1522    .byte   58                              # DW_AT_decl_file523    .byte   11                              # DW_FORM_data1524    .byte   59                              # DW_AT_decl_line525    .byte   11                              # DW_FORM_data1526    .byte   73                              # DW_AT_type527    .byte   16                              # DW_FORM_ref_addr528    .byte   0                               # EOM(1)529    .byte   0                               # EOM(2)530    .byte	0                               # EOM(3)531	.section	.debug_info,"",@progbits532.Lcu_begin0:533	.long	.Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit534.Ldebug_info_start4:535	.short	5                               # DWARF version number536	.byte	1                               # DWARF Unit Type537	.byte	8                               # Address Size (in bytes)538	.long	.debug_abbrev                   # Offset Into Abbrev. Section539	.byte	6                               # Abbrev [6] 0xc:0x78 DW_TAG_compile_unit540	.byte	0                               # DW_AT_producer541	.short	33                              # DW_AT_language542	.byte	1                               # DW_AT_name543	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base544	.long	.Lline_table_start0             # DW_AT_stmt_list545	.byte	2                               # DW_AT_comp_dir546	.byte	0                               # DW_AT_low_pc547	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc548	.long	.Laddr_table_base0              # DW_AT_addr_base549	.byte	7                               # Abbrev [7] 0x23:0x3c DW_TAG_subprogram550	.byte	0                               # DW_AT_low_pc551	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc552	.byte	1                               # DW_AT_frame_base553	.byte	86554	.byte	4                               # DW_AT_name555	.byte	1                               # DW_AT_decl_file556	.byte	10                              # DW_AT_decl_line557	.long	95                              # DW_AT_type558                                        # DW_AT_external559	.byte	8                               # Abbrev [8] 0x32:0xb DW_TAG_formal_parameter560	.byte	2                               # DW_AT_location561	.byte	145562	.byte	120563	.byte	8                               # DW_AT_name564	.byte	1                               # DW_AT_decl_file565	.byte	10                              # DW_AT_decl_line566	.long	95                              # DW_AT_type567	.byte	8                               # Abbrev [8] 0x3d:0xb DW_TAG_formal_parameter568	.byte	2                               # DW_AT_location569	.byte	145570	.byte	112571	.byte	9                               # DW_AT_name572	.byte	1                               # DW_AT_decl_file573	.byte	10                              # DW_AT_decl_line574	.long	99                              # DW_AT_type575	.byte	9                               # Abbrev [9] 0x48:0xb DW_TAG_variable576	.byte	2                               # DW_AT_location577	.byte	145578	.byte	88579	.byte	11                              # DW_AT_name580	.byte	1                               # DW_AT_decl_file581	.byte	11                              # DW_AT_decl_line582	.long	113                             # DW_AT_type583	.byte	9                               # Abbrev [9] 0x53:0xb DW_TAG_variable584	.byte	2                               # DW_AT_location585	.byte	145586	.byte	72587	.byte	16                              # DW_AT_name588	.byte	1                               # DW_AT_decl_file589	.byte	15                              # DW_AT_decl_line590	.long	122                             # DW_AT_type591	.byte	0                               # End Of Children Mark592	.byte	5                               # Abbrev [5] 0x5f:0x4 DW_TAG_base_type593	.byte	5                               # DW_AT_name594	.byte	5                               # DW_AT_encoding595	.byte	4                               # DW_AT_byte_size596	.byte	4                               # Abbrev [4] 0x63:0x5 DW_TAG_pointer_type597	.long	104                             # DW_AT_type598	.byte	4                               # Abbrev [4] 0x68:0x5 DW_TAG_pointer_type599	.long	109                             # DW_AT_type600	.byte	5                               # Abbrev [5] 0x6d:0x4 DW_TAG_base_type601	.byte	10                              # DW_AT_name602	.byte	6                               # DW_AT_encoding603	.byte	1                               # DW_AT_byte_size604  .Lmanual_label:605	.byte	10                              # Abbrev [10] 0x71:0x9 DW_TAG_structure_type606                                        # DW_AT_declaration607	.quad	7448148824980338162             # DW_AT_signature608	.byte	10                              # Abbrev [10] 0x7a:0x9 DW_TAG_structure_type609                                        # DW_AT_declaration610	.quad	5322170643381124694             # DW_AT_signature611	.byte	0                               # End Of Children Mark612.Ldebug_info_end4:613.Lcu_begin1:614	.long	.Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit615.Ldebug_info_start5:616	.short	5                               # DWARF version number617	.byte	1                               # DWARF Unit Type618	.byte	8                               # Address Size (in bytes)619	.long	.debug_abbrev                   # Offset Into Abbrev. Section620	.byte	6                               # Abbrev [6] 0xc:0x55 DW_TAG_compile_unit621	.byte	0                               # DW_AT_producer622	.short	33                              # DW_AT_language623	.byte	3                               # DW_AT_name624	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base625	.long	.Lline_table_start0             # DW_AT_stmt_list626	.byte	2                               # DW_AT_comp_dir627	.byte	1                               # DW_AT_low_pc628	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc629	.long	.Laddr_table_base0              # DW_AT_addr_base630	.byte	11                              # Abbrev [11] 0x23:0x27 DW_TAG_subprogram631	.byte	1                               # DW_AT_low_pc632	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc633	.byte	1                               # DW_AT_frame_base634	.byte	86635	.byte	6                               # DW_AT_linkage_name636	.byte	7                               # DW_AT_name637	.byte	2                               # DW_AT_decl_file638	.byte	11                              # DW_AT_decl_line639	.long	74                              # DW_AT_type640                                        # DW_AT_external641	.byte	9                               # Abbrev [9] 0x33:0xb DW_TAG_variable642	.byte	2                               # DW_AT_location643	.byte	145644	.byte	104645	.byte	11                              # DW_AT_name646	.byte	2                               # DW_AT_decl_file647	.byte	12                              # DW_AT_decl_line648	.long	78                              # DW_AT_type649	.byte	12                              # Abbrev [12] 0x3e:0xb DW_TAG_variable <-- Manually modified s/9/12650	.byte	2                               # DW_AT_location651	.byte	145652	.byte	88653	.byte	16                              # DW_AT_name654	.byte	2                               # DW_AT_decl_file655	.byte	13                              # DW_AT_decl_line656	.long	.Lmanual_label                  # DW_AT_type <-- Manually modified657	.byte	0                               # End Of Children Mark658	.byte	5                               # Abbrev [5] 0x4a:0x4 DW_TAG_base_type659	.byte	5                               # DW_AT_name660	.byte	5                               # DW_AT_encoding661	.byte	4                               # DW_AT_byte_size662	.byte	10                              # Abbrev [10] 0x4e:0x9 DW_TAG_structure_type663                                        # DW_AT_declaration664	.quad	1175092228111723119             # DW_AT_signature665	.byte	10                              # Abbrev [10] 0x57:0x9 DW_TAG_structure_type666                                        # DW_AT_declaration667	.quad	-5451594423976726044            # DW_AT_signature668	.byte	0                               # End Of Children Mark669.Ldebug_info_end5:670	.section	.debug_str_offsets,"",@progbits671	.long	84                              # Length of String Offsets Set672	.short	5673	.short	0674.Lstr_offsets_base0:675	.section	.debug_str,"MS",@progbits,1676.Linfo_string0:677	.asciz	"clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)" # string offset=0678.Linfo_string1:679	.asciz	"main.cpp"                      # string offset=105680.Linfo_string2:681	.asciz	"/dwarf5-types-backward-reference-test" # string offset=114682.Linfo_string3:683	.asciz	"helper.cpp"                    # string offset=189684.Linfo_string4:685	.asciz	"main"                          # string offset=200686.Linfo_string5:687	.asciz	"int"                           # string offset=205688.Linfo_string6:689	.asciz	"_Z3foov"                       # string offset=209690.Linfo_string7:691	.asciz	"foo"                           # string offset=217692.Linfo_string8:693	.asciz	"argc"                          # string offset=221694.Linfo_string9:695	.asciz	"argv"                          # string offset=226696.Linfo_string10:697	.asciz	"char"                          # string offset=231698.Linfo_string11:699	.asciz	"f"                             # string offset=236700.Linfo_string12:701	.asciz	"c1"                            # string offset=238702.Linfo_string13:703	.asciz	"c2"                            # string offset=241704.Linfo_string14:705	.asciz	"c3"                            # string offset=244706.Linfo_string15:707	.asciz	"Foo"                           # string offset=247708.Linfo_string16:709	.asciz	"f2"                            # string offset=251710.Linfo_string17:711	.asciz	"Foo2"                          # string offset=254712.Linfo_string18:713	.asciz	"Foo2a"                         # string offset=259714.Linfo_string19:715	.asciz	"Foo3"                          # string offset=265716	.section	.debug_str_offsets,"",@progbits717	.long	.Linfo_string0718	.long	.Linfo_string1719	.long	.Linfo_string2720	.long	.Linfo_string3721	.long	.Linfo_string4722	.long	.Linfo_string5723	.long	.Linfo_string6724	.long	.Linfo_string7725	.long	.Linfo_string8726	.long	.Linfo_string9727	.long	.Linfo_string10728	.long	.Linfo_string11729	.long	.Linfo_string12730	.long	.Linfo_string13731	.long	.Linfo_string14732	.long	.Linfo_string15733	.long	.Linfo_string16734	.long	.Linfo_string17735	.long	.Linfo_string18736	.long	.Linfo_string19737	.section	.debug_addr,"",@progbits738	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution739.Ldebug_addr_start0:740	.short	5                               # DWARF version number741	.byte	8                               # Address size742	.byte	0                               # Segment selector size743.Laddr_table_base0:744	.quad	.Lfunc_begin0745	.quad	.Lfunc_begin1746.Ldebug_addr_end0:747	.ident	"clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"748	.ident	"clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"749	.section	".note.GNU-stack","",@progbits750	.addrsig751	.section	.debug_line,"",@progbits752.Lline_table_start0:753