brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.7 KiB · 6a8d81d Raw
462 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o4# RUN: %clang %cflags -dwarf-5 %tmain.o -o %t.exe -Wl,-q5# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections6# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe | FileCheck --check-prefix=PRECHECK %s7# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s8 9## This test checks that we correctly encode new index into .debug_addr section10## from DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x#)11 12# PRECHECK: version = 0x000513# PRECHECK: DW_TAG_variable14# PRECHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x0)15# PRECHECK: DW_TAG_variable16# PRECHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x1)17# PRECHECK-EMPTY:18 19# POSTCHECK: version = 0x000520# POSTCHECK: DW_TAG_variable21# POSTCHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x2)22# POSTCHECK-EMPTY:23# POSTCHECK: DW_TAG_variable24# POSTCHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x3)25# POSTCHECK-EMPTY:26 27# clang++ main.cpp -g -O228# void use(int * x, int * y) {29# *x += 4;30# *y -= 2;31# }32#33# int x = 0;34# int y = 1;35# int  main(int argc, char *argv[]) {36#    x = argc;37#    y = argc + 3;38#    use(&x, &y);39#    return x + y;40# }41 42	.text43	.file	"main.cpp"44	.file	0 "/testLocExprLoc" "main.cpp" md5 0xd4fd79ce0087c4cefd089752bf2182c645	.globl	_Z3usePiS_                      # -- Begin function _Z3usePiS_46	.p2align	4, 0x9047	.type	_Z3usePiS_,@function48_Z3usePiS_:                             # @_Z3usePiS_49.Lfunc_begin0:50	.loc	0 1 0                           # main.cpp:1:051	.cfi_startproc52# %bb.0:                                # %entry53	#DEBUG_VALUE: use:x <- $rdi54	#DEBUG_VALUE: use:y <- $rsi55	.loc	0 2 4 prologue_end              # main.cpp:2:456	addl	$4, (%rdi)57	.loc	0 3 4                           # main.cpp:3:458	addl	$-2, (%rsi)59	.loc	0 4 1                           # main.cpp:4:160	retq61.Ltmp0:62.Lfunc_end0:63	.size	_Z3usePiS_, .Lfunc_end0-_Z3usePiS_64	.cfi_endproc65                                        # -- End function66	.globl	main                            # -- Begin function main67	.p2align	4, 0x9068	.type	main,@function69main:                                   # @main70.Lfunc_begin1:71	.loc	0 8 0                           # main.cpp:8:072	.cfi_startproc73# %bb.0:                                # %entry74	#DEBUG_VALUE: main:argc <- $edi75	#DEBUG_VALUE: main:argv <- $rsi76                                        # kill: def $edi killed $edi def $rdi77	.loc	0 2 4 prologue_end              # main.cpp:2:478	leal	4(%rdi), %eax79	movl	%eax, x(%rip)80.Ltmp1:81	#DEBUG_VALUE: use:x <- undef82	.loc	0 3 4                           # main.cpp:3:483	leal	1(%rdi), %eax84	movl	%eax, y(%rip)85.Ltmp2:86	#DEBUG_VALUE: use:y <- undef87	.loc	0 12 13                         # main.cpp:12:1388	leal	(%rdi,%rdi), %eax89	addl	$5, %eax90	.loc	0 12 4 is_stmt 0                # main.cpp:12:491	retq92.Ltmp3:93.Lfunc_end1:94	.size	main, .Lfunc_end1-main95	.cfi_endproc96                                        # -- End function97	.type	x,@object                       # @x98	.bss99	.globl	x100	.p2align	2101x:102	.long	0                               # 0x0103	.size	x, 4104 105	.type	y,@object                       # @y106	.data107	.globl	y108	.p2align	2109y:110	.long	1                               # 0x1111	.size	y, 4112 113	.section	.debug_abbrev,"",@progbits114	.byte	1                               # Abbreviation Code115	.byte	17                              # DW_TAG_compile_unit116	.byte	1                               # DW_CHILDREN_yes117	.byte	37                              # DW_AT_producer118	.byte	37                              # DW_FORM_strx1119	.byte	19                              # DW_AT_language120	.byte	5                               # DW_FORM_data2121	.byte	3                               # DW_AT_name122	.byte	37                              # DW_FORM_strx1123	.byte	114                             # DW_AT_str_offsets_base124	.byte	23                              # DW_FORM_sec_offset125	.byte	16                              # DW_AT_stmt_list126	.byte	23                              # DW_FORM_sec_offset127	.byte	27                              # DW_AT_comp_dir128	.byte	37                              # DW_FORM_strx1129	.byte	17                              # DW_AT_low_pc130	.byte	27                              # DW_FORM_addrx131	.byte	18                              # DW_AT_high_pc132	.byte	6                               # DW_FORM_data4133	.byte	115                             # DW_AT_addr_base134	.byte	23                              # DW_FORM_sec_offset135	.byte	0                               # EOM(1)136	.byte	0                               # EOM(2)137	.byte	2                               # Abbreviation Code138	.byte	52                              # DW_TAG_variable139	.byte	0                               # DW_CHILDREN_no140	.byte	3                               # DW_AT_name141	.byte	37                              # DW_FORM_strx1142	.byte	73                              # DW_AT_type143	.byte	19                              # DW_FORM_ref4144	.byte	63                              # DW_AT_external145	.byte	25                              # DW_FORM_flag_present146	.byte	58                              # DW_AT_decl_file147	.byte	11                              # DW_FORM_data1148	.byte	59                              # DW_AT_decl_line149	.byte	11                              # DW_FORM_data1150	.byte	2                               # DW_AT_location151	.byte	24                              # DW_FORM_exprloc152	.byte	0                               # EOM(1)153	.byte	0                               # EOM(2)154	.byte	3                               # Abbreviation Code155	.byte	36                              # DW_TAG_base_type156	.byte	0                               # DW_CHILDREN_no157	.byte	3                               # DW_AT_name158	.byte	37                              # DW_FORM_strx1159	.byte	62                              # DW_AT_encoding160	.byte	11                              # DW_FORM_data1161	.byte	11                              # DW_AT_byte_size162	.byte	11                              # DW_FORM_data1163	.byte	0                               # EOM(1)164	.byte	0                               # EOM(2)165	.byte	4                               # Abbreviation Code166	.byte	46                              # DW_TAG_subprogram167	.byte	1                               # DW_CHILDREN_yes168	.byte	17                              # DW_AT_low_pc169	.byte	27                              # DW_FORM_addrx170	.byte	18                              # DW_AT_high_pc171	.byte	6                               # DW_FORM_data4172	.byte	64                              # DW_AT_frame_base173	.byte	24                              # DW_FORM_exprloc174	.byte	122                             # DW_AT_call_all_calls175	.byte	25                              # DW_FORM_flag_present176	.byte	49                              # DW_AT_abstract_origin177	.byte	19                              # DW_FORM_ref4178	.byte	0                               # EOM(1)179	.byte	0                               # EOM(2)180	.byte	5                               # Abbreviation Code181	.byte	5                               # DW_TAG_formal_parameter182	.byte	0                               # DW_CHILDREN_no183	.byte	2                               # DW_AT_location184	.byte	24                              # DW_FORM_exprloc185	.byte	49                              # DW_AT_abstract_origin186	.byte	19                              # DW_FORM_ref4187	.byte	0                               # EOM(1)188	.byte	0                               # EOM(2)189	.byte	6                               # Abbreviation Code190	.byte	46                              # DW_TAG_subprogram191	.byte	1                               # DW_CHILDREN_yes192	.byte	110                             # DW_AT_linkage_name193	.byte	37                              # DW_FORM_strx1194	.byte	3                               # DW_AT_name195	.byte	37                              # DW_FORM_strx1196	.byte	58                              # DW_AT_decl_file197	.byte	11                              # DW_FORM_data1198	.byte	59                              # DW_AT_decl_line199	.byte	11                              # DW_FORM_data1200	.byte	63                              # DW_AT_external201	.byte	25                              # DW_FORM_flag_present202	.byte	32                              # DW_AT_inline203	.byte	33                              # DW_FORM_implicit_const204	.byte	1205	.byte	0                               # EOM(1)206	.byte	0                               # EOM(2)207	.byte	7                               # Abbreviation Code208	.byte	5                               # DW_TAG_formal_parameter209	.byte	0                               # DW_CHILDREN_no210	.byte	3                               # DW_AT_name211	.byte	37                              # DW_FORM_strx1212	.byte	58                              # DW_AT_decl_file213	.byte	11                              # DW_FORM_data1214	.byte	59                              # DW_AT_decl_line215	.byte	11                              # DW_FORM_data1216	.byte	73                              # DW_AT_type217	.byte	19                              # DW_FORM_ref4218	.byte	0                               # EOM(1)219	.byte	0                               # EOM(2)220	.byte	8                               # Abbreviation Code221	.byte	15                              # DW_TAG_pointer_type222	.byte	0                               # DW_CHILDREN_no223	.byte	73                              # DW_AT_type224	.byte	19                              # DW_FORM_ref4225	.byte	0                               # EOM(1)226	.byte	0                               # EOM(2)227	.byte	9                               # Abbreviation Code228	.byte	46                              # DW_TAG_subprogram229	.byte	1                               # DW_CHILDREN_yes230	.byte	17                              # DW_AT_low_pc231	.byte	27                              # DW_FORM_addrx232	.byte	18                              # DW_AT_high_pc233	.byte	6                               # DW_FORM_data4234	.byte	64                              # DW_AT_frame_base235	.byte	24                              # DW_FORM_exprloc236	.byte	122                             # DW_AT_call_all_calls237	.byte	25                              # DW_FORM_flag_present238	.byte	3                               # DW_AT_name239	.byte	37                              # DW_FORM_strx1240	.byte	58                              # DW_AT_decl_file241	.byte	11                              # DW_FORM_data1242	.byte	59                              # DW_AT_decl_line243	.byte	11                              # DW_FORM_data1244	.byte	73                              # DW_AT_type245	.byte	19                              # DW_FORM_ref4246	.byte	63                              # DW_AT_external247	.byte	25                              # DW_FORM_flag_present248	.byte	0                               # EOM(1)249	.byte	0                               # EOM(2)250	.byte	10                              # Abbreviation Code251	.byte	5                               # DW_TAG_formal_parameter252	.byte	0                               # DW_CHILDREN_no253	.byte	2                               # DW_AT_location254	.byte	24                              # DW_FORM_exprloc255	.byte	3                               # DW_AT_name256	.byte	37                              # DW_FORM_strx1257	.byte	58                              # DW_AT_decl_file258	.byte	11                              # DW_FORM_data1259	.byte	59                              # DW_AT_decl_line260	.byte	11                              # DW_FORM_data1261	.byte	73                              # DW_AT_type262	.byte	19                              # DW_FORM_ref4263	.byte	0                               # EOM(1)264	.byte	0                               # EOM(2)265	.byte	11                              # Abbreviation Code266	.byte	29                              # DW_TAG_inlined_subroutine267	.byte	0                               # DW_CHILDREN_no268	.byte	49                              # DW_AT_abstract_origin269	.byte	19                              # DW_FORM_ref4270	.byte	17                              # DW_AT_low_pc271	.byte	27                              # DW_FORM_addrx272	.byte	18                              # DW_AT_high_pc273	.byte	6                               # DW_FORM_data4274	.byte	88                              # DW_AT_call_file275	.byte	11                              # DW_FORM_data1276	.byte	89                              # DW_AT_call_line277	.byte	11                              # DW_FORM_data1278	.byte	87                              # DW_AT_call_column279	.byte	11                              # DW_FORM_data1280	.byte	0                               # EOM(1)281	.byte	0                               # EOM(2)282	.byte	0                               # EOM(3)283	.section	.debug_info,"",@progbits284.Lcu_begin0:285	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit286.Ldebug_info_start0:287	.short	5                               # DWARF version number288	.byte	1                               # DWARF Unit Type289	.byte	8                               # Address Size (in bytes)290	.long	.debug_abbrev                   # Offset Into Abbrev. Section291	.byte	1                               # Abbrev [1] 0xc:0xa7 DW_TAG_compile_unit292	.byte	0                               # DW_AT_producer293	.short	33                              # DW_AT_language294	.byte	1                               # DW_AT_name295	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base296	.long	.Lline_table_start0             # DW_AT_stmt_list297	.byte	2                               # DW_AT_comp_dir298	.byte	2                               # DW_AT_low_pc299	.long	.Lfunc_end1-.Lfunc_begin0       # DW_AT_high_pc300	.long	.Laddr_table_base0              # DW_AT_addr_base301	.byte	2                               # Abbrev [2] 0x23:0xb DW_TAG_variable302	.byte	3                               # DW_AT_name303	.long	46                              # DW_AT_type304                                        # DW_AT_external305	.byte	0                               # DW_AT_decl_file306	.byte	6                               # DW_AT_decl_line307	.byte	2                               # DW_AT_location308	.byte	161309	.byte	0310	.byte	3                               # Abbrev [3] 0x2e:0x4 DW_TAG_base_type311	.byte	4                               # DW_AT_name312	.byte	5                               # DW_AT_encoding313	.byte	4                               # DW_AT_byte_size314	.byte	2                               # Abbrev [2] 0x32:0xb DW_TAG_variable315	.byte	5                               # DW_AT_name316	.long	46                              # DW_AT_type317                                        # DW_AT_external318	.byte	0                               # DW_AT_decl_file319	.byte	7                               # DW_AT_decl_line320	.byte	2                               # DW_AT_location321	.byte	161322	.byte	1323	.byte	4                               # Abbrev [4] 0x3d:0x1b DW_TAG_subprogram324	.byte	2                               # DW_AT_low_pc325	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc326	.byte	1                               # DW_AT_frame_base327	.byte	87328                                        # DW_AT_call_all_calls329	.long	88                              # DW_AT_abstract_origin330	.byte	5                               # Abbrev [5] 0x49:0x7 DW_TAG_formal_parameter331	.byte	1                               # DW_AT_location332	.byte	85333	.long	93                              # DW_AT_abstract_origin334	.byte	5                               # Abbrev [5] 0x50:0x7 DW_TAG_formal_parameter335	.byte	1                               # DW_AT_location336	.byte	84337	.long	101                             # DW_AT_abstract_origin338	.byte	0                               # End Of Children Mark339	.byte	6                               # Abbrev [6] 0x58:0x16 DW_TAG_subprogram340	.byte	6                               # DW_AT_linkage_name341	.byte	7                               # DW_AT_name342	.byte	0                               # DW_AT_decl_file343	.byte	1                               # DW_AT_decl_line344                                        # DW_AT_external345                                        # DW_AT_inline346	.byte	7                               # Abbrev [7] 0x5d:0x8 DW_TAG_formal_parameter347	.byte	3                               # DW_AT_name348	.byte	0                               # DW_AT_decl_file349	.byte	1                               # DW_AT_decl_line350	.long	110                             # DW_AT_type351	.byte	7                               # Abbrev [7] 0x65:0x8 DW_TAG_formal_parameter352	.byte	5                               # DW_AT_name353	.byte	0                               # DW_AT_decl_file354	.byte	1                               # DW_AT_decl_line355	.long	110                             # DW_AT_type356	.byte	0                               # End Of Children Mark357	.byte	8                               # Abbrev [8] 0x6e:0x5 DW_TAG_pointer_type358	.long	46                              # DW_AT_type359	.byte	9                               # Abbrev [9] 0x73:0x31 DW_TAG_subprogram360	.byte	3                               # DW_AT_low_pc361	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc362	.byte	1                               # DW_AT_frame_base363	.byte	87364                                        # DW_AT_call_all_calls365	.byte	8                               # DW_AT_name366	.byte	0                               # DW_AT_decl_file367	.byte	8                               # DW_AT_decl_line368	.long	46                              # DW_AT_type369                                        # DW_AT_external370	.byte	10                              # Abbrev [10] 0x82:0xa DW_TAG_formal_parameter371	.byte	1                               # DW_AT_location372	.byte	85373	.byte	9                               # DW_AT_name374	.byte	0                               # DW_AT_decl_file375	.byte	8                               # DW_AT_decl_line376	.long	46                              # DW_AT_type377	.byte	10                              # Abbrev [10] 0x8c:0xa DW_TAG_formal_parameter378	.byte	1                               # DW_AT_location379	.byte	84380	.byte	10                              # DW_AT_name381	.byte	0                               # DW_AT_decl_file382	.byte	8                               # DW_AT_decl_line383	.long	164                             # DW_AT_type384	.byte	11                              # Abbrev [11] 0x96:0xd DW_TAG_inlined_subroutine385	.long	88                              # DW_AT_abstract_origin386	.byte	3                               # DW_AT_low_pc387	.long	.Ltmp2-.Lfunc_begin1            # DW_AT_high_pc388	.byte	0                               # DW_AT_call_file389	.byte	11                              # DW_AT_call_line390	.byte	4                               # DW_AT_call_column391	.byte	0                               # End Of Children Mark392	.byte	8                               # Abbrev [8] 0xa4:0x5 DW_TAG_pointer_type393	.long	169                             # DW_AT_type394	.byte	8                               # Abbrev [8] 0xa9:0x5 DW_TAG_pointer_type395	.long	174                             # DW_AT_type396	.byte	3                               # Abbrev [3] 0xae:0x4 DW_TAG_base_type397	.byte	11                              # DW_AT_name398	.byte	6                               # DW_AT_encoding399	.byte	1                               # DW_AT_byte_size400	.byte	0                               # End Of Children Mark401.Ldebug_info_end0:402	.section	.debug_str_offsets,"",@progbits403	.long	52                              # Length of String Offsets Set404	.short	5405	.short	0406.Lstr_offsets_base0:407	.section	.debug_str,"MS",@progbits,1408.Linfo_string0:409	.asciz	"clang version 15.0.0" # string offset=0410.Linfo_string1:411	.asciz	"main.cpp"                      # string offset=134412.Linfo_string2:413	.asciz	"/testLocExprLoc" # string offset=143414.Linfo_string3:415	.asciz	"x"                             # string offset=195416.Linfo_string4:417	.asciz	"int"                           # string offset=197418.Linfo_string5:419	.asciz	"y"                             # string offset=201420.Linfo_string6:421	.asciz	"_Z3usePiS_"                    # string offset=203422.Linfo_string7:423	.asciz	"use"                           # string offset=214424.Linfo_string8:425	.asciz	"main"                          # string offset=218426.Linfo_string9:427	.asciz	"argc"                          # string offset=223428.Linfo_string10:429	.asciz	"argv"                          # string offset=228430.Linfo_string11:431	.asciz	"char"                          # string offset=233432	.section	.debug_str_offsets,"",@progbits433	.long	.Linfo_string0434	.long	.Linfo_string1435	.long	.Linfo_string2436	.long	.Linfo_string3437	.long	.Linfo_string4438	.long	.Linfo_string5439	.long	.Linfo_string6440	.long	.Linfo_string7441	.long	.Linfo_string8442	.long	.Linfo_string9443	.long	.Linfo_string10444	.long	.Linfo_string11445	.section	.debug_addr,"",@progbits446	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution447.Ldebug_addr_start0:448	.short	5                               # DWARF version number449	.byte	8                               # Address size450	.byte	0                               # Segment selector size451.Laddr_table_base0:452	.quad	x453	.quad	y454	.quad	.Lfunc_begin0455	.quad	.Lfunc_begin1456.Ldebug_addr_end0:457	.ident	"clang version 15.0.0"458	.section	".note.GNU-stack","",@progbits459	.addrsig460	.section	.debug_line,"",@progbits461.Lline_table_start0:462