brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.1 KiB · b88e69e Raw
446 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %t1.o4# RUN: %clang %cflags -dwarf-5 %t1.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=CHECK %s8 9# PRECHECK: DW_TAG_variable10# PRECHECK: DW_AT_name [DW_FORM_strx1]11# PRECHECK: DW_AT_type [DW_FORM_ref4]12# PRECHECK: DW_AT_decl_file [DW_FORM_data1]13# PRECHECK: DW_AT_decl_line [DW_FORM_data1]14# PRECHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x0, DW_OP_piece 0x4, DW_OP_addrx 0x1, DW_OP_piece 0x4)15 16 17# CHECK: DW_TAG_variable18# CHECK: DW_AT_name [DW_FORM_strx1]19# CHECK: DW_AT_type [DW_FORM_ref4]20# CHECK: DW_AT_decl_file [DW_FORM_data1]21# CHECK: DW_AT_decl_line [DW_FORM_data1]22# CHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x2, DW_OP_piece 0x4, DW_OP_addrx 0x3, DW_OP_piece 0x4)23 24## This test checks that we update DW_AT_location [DW_FORM_exprloc] with multiple DW_OP_addrx.25 26# struct pair {int i; int j; };27# static pair p;28# int load() {29#     return p.i + p.j;30# }31# void store(int i, int j) {32#     p.i = i;33#       p.j = j;34# }35# int main() {36# return 0;37# }38	.text39	.file	"main.cpp"40	.file	0 "task" "main.cpp" md5 0x02662c1bdb2472436fee6b36e4dca0e041	.globl	_Z4loadv                        # -- Begin function _Z4loadv42	.p2align	4, 0x9043	.type	_Z4loadv,@function44_Z4loadv:                               # @_Z4loadv45.Lfunc_begin0:46	.loc	0 3 0                           # main.cpp:3:047	.cfi_startproc48# %bb.0:                                # %entry49	.loc	0 4 20 prologue_end             # main.cpp:4:2050	movl	_ZL1p.1(%rip), %eax51	.loc	0 4 16 is_stmt 0                # main.cpp:4:1652	addl	_ZL1p.0(%rip), %eax53	.loc	0 4 5                           # main.cpp:4:554	retq55.Ltmp0:56.Lfunc_end0:57	.size	_Z4loadv, .Lfunc_end0-_Z4loadv58	.cfi_endproc59                                        # -- End function60	.globl	_Z5storeii                      # -- Begin function _Z5storeii61	.p2align	4, 0x9062	.type	_Z5storeii,@function63_Z5storeii:                             # @_Z5storeii64.Lfunc_begin1:65	.loc	0 6 0 is_stmt 1                 # main.cpp:6:066	.cfi_startproc67# %bb.0:                                # %entry68	#DEBUG_VALUE: store:i <- $edi69	#DEBUG_VALUE: store:j <- $esi70	.loc	0 7 9 prologue_end              # main.cpp:7:971	movl	%edi, _ZL1p.0(%rip)72	.loc	0 8 11                          # main.cpp:8:1173	movl	%esi, _ZL1p.1(%rip)74	.loc	0 9 1                           # main.cpp:9:175	retq76.Ltmp1:77.Lfunc_end1:78	.size	_Z5storeii, .Lfunc_end1-_Z5storeii79	.cfi_endproc80                                        # -- End function81	.globl	main                            # -- Begin function main82	.p2align	4, 0x9083	.type	main,@function84main:                                   # @main85.Lfunc_begin2:86	.loc	0 10 0                          # main.cpp:10:087	.cfi_startproc88# %bb.0:                                # %entry89	.loc	0 11 1 prologue_end             # main.cpp:11:190	xorl	%eax, %eax91	retq92.Ltmp2:93.Lfunc_end2:94	.size	main, .Lfunc_end2-main95	.cfi_endproc96                                        # -- End function97	.type	_ZL1p.0,@object                 # @_ZL1p.098	.local	_ZL1p.099	.comm	_ZL1p.0,4,4100	.type	_ZL1p.1,@object                 # @_ZL1p.1101	.local	_ZL1p.1102	.comm	_ZL1p.1,4,4103	.section	.debug_abbrev,"",@progbits104	.byte	1                               # Abbreviation Code105	.byte	17                              # DW_TAG_compile_unit106	.byte	1                               # DW_CHILDREN_yes107	.byte	37                              # DW_AT_producer108	.byte	37                              # DW_FORM_strx1109	.byte	19                              # DW_AT_language110	.byte	5                               # DW_FORM_data2111	.byte	3                               # DW_AT_name112	.byte	37                              # DW_FORM_strx1113	.byte	114                             # DW_AT_str_offsets_base114	.byte	23                              # DW_FORM_sec_offset115	.byte	16                              # DW_AT_stmt_list116	.byte	23                              # DW_FORM_sec_offset117	.byte	27                              # DW_AT_comp_dir118	.byte	37                              # DW_FORM_strx1119	.byte	17                              # DW_AT_low_pc120	.byte	27                              # DW_FORM_addrx121	.byte	18                              # DW_AT_high_pc122	.byte	6                               # DW_FORM_data4123	.byte	115                             # DW_AT_addr_base124	.byte	23                              # DW_FORM_sec_offset125	.byte	0                               # EOM(1)126	.byte	0                               # EOM(2)127	.byte	2                               # Abbreviation Code128	.byte	52                              # DW_TAG_variable129	.byte	0                               # DW_CHILDREN_no130	.byte	3                               # DW_AT_name131	.byte	37                              # DW_FORM_strx1132	.byte	73                              # DW_AT_type133	.byte	19                              # DW_FORM_ref4134	.byte	58                              # DW_AT_decl_file135	.byte	11                              # DW_FORM_data1136	.byte	59                              # DW_AT_decl_line137	.byte	11                              # DW_FORM_data1138	.byte	2                               # DW_AT_location139	.byte	24                              # DW_FORM_exprloc140	.byte	110                             # DW_AT_linkage_name141	.byte	37                              # DW_FORM_strx1142	.byte	0                               # EOM(1)143	.byte	0                               # EOM(2)144	.byte	3                               # Abbreviation Code145	.byte	19                              # DW_TAG_structure_type146	.byte	1                               # DW_CHILDREN_yes147	.byte	54                              # DW_AT_calling_convention148	.byte	11                              # DW_FORM_data1149	.byte	3                               # DW_AT_name150	.byte	37                              # DW_FORM_strx1151	.byte	11                              # DW_AT_byte_size152	.byte	11                              # DW_FORM_data1153	.byte	58                              # DW_AT_decl_file154	.byte	11                              # DW_FORM_data1155	.byte	59                              # DW_AT_decl_line156	.byte	11                              # DW_FORM_data1157	.byte	0                               # EOM(1)158	.byte	0                               # EOM(2)159	.byte	4                               # Abbreviation Code160	.byte	13                              # DW_TAG_member161	.byte	0                               # DW_CHILDREN_no162	.byte	3                               # DW_AT_name163	.byte	37                              # DW_FORM_strx1164	.byte	73                              # DW_AT_type165	.byte	19                              # DW_FORM_ref4166	.byte	58                              # DW_AT_decl_file167	.byte	11                              # DW_FORM_data1168	.byte	59                              # DW_AT_decl_line169	.byte	11                              # DW_FORM_data1170	.byte	56                              # DW_AT_data_member_location171	.byte	11                              # DW_FORM_data1172	.byte	0                               # EOM(1)173	.byte	0                               # EOM(2)174	.byte	5                               # Abbreviation Code175	.byte	36                              # DW_TAG_base_type176	.byte	0                               # DW_CHILDREN_no177	.byte	3                               # DW_AT_name178	.byte	37                              # DW_FORM_strx1179	.byte	62                              # DW_AT_encoding180	.byte	11                              # DW_FORM_data1181	.byte	11                              # DW_AT_byte_size182	.byte	11                              # DW_FORM_data1183	.byte	0                               # EOM(1)184	.byte	0                               # EOM(2)185	.byte	6                               # Abbreviation Code186	.byte	46                              # DW_TAG_subprogram187	.byte	0                               # DW_CHILDREN_no188	.byte	17                              # DW_AT_low_pc189	.byte	27                              # DW_FORM_addrx190	.byte	18                              # DW_AT_high_pc191	.byte	6                               # DW_FORM_data4192	.byte	64                              # DW_AT_frame_base193	.byte	24                              # DW_FORM_exprloc194	.byte	122                             # DW_AT_call_all_calls195	.byte	25                              # DW_FORM_flag_present196	.byte	110                             # DW_AT_linkage_name197	.byte	37                              # DW_FORM_strx1198	.byte	3                               # DW_AT_name199	.byte	37                              # DW_FORM_strx1200	.byte	58                              # DW_AT_decl_file201	.byte	11                              # DW_FORM_data1202	.byte	59                              # DW_AT_decl_line203	.byte	11                              # DW_FORM_data1204	.byte	73                              # DW_AT_type205	.byte	19                              # DW_FORM_ref4206	.byte	63                              # DW_AT_external207	.byte	25                              # DW_FORM_flag_present208	.byte	0                               # EOM(1)209	.byte	0                               # EOM(2)210	.byte	7                               # Abbreviation Code211	.byte	46                              # DW_TAG_subprogram212	.byte	1                               # DW_CHILDREN_yes213	.byte	17                              # DW_AT_low_pc214	.byte	27                              # DW_FORM_addrx215	.byte	18                              # DW_AT_high_pc216	.byte	6                               # DW_FORM_data4217	.byte	64                              # DW_AT_frame_base218	.byte	24                              # DW_FORM_exprloc219	.byte	122                             # DW_AT_call_all_calls220	.byte	25                              # DW_FORM_flag_present221	.byte	110                             # DW_AT_linkage_name222	.byte	37                              # DW_FORM_strx1223	.byte	3                               # DW_AT_name224	.byte	37                              # DW_FORM_strx1225	.byte	58                              # DW_AT_decl_file226	.byte	11                              # DW_FORM_data1227	.byte	59                              # DW_AT_decl_line228	.byte	11                              # DW_FORM_data1229	.byte	63                              # DW_AT_external230	.byte	25                              # DW_FORM_flag_present231	.byte	0                               # EOM(1)232	.byte	0                               # EOM(2)233	.byte	8                               # Abbreviation Code234	.byte	5                               # DW_TAG_formal_parameter235	.byte	0                               # DW_CHILDREN_no236	.byte	2                               # DW_AT_location237	.byte	24                              # DW_FORM_exprloc238	.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	0                               # EOM(1)247	.byte	0                               # EOM(2)248	.byte	9                               # Abbreviation Code249	.byte	46                              # DW_TAG_subprogram250	.byte	0                               # DW_CHILDREN_no251	.byte	17                              # DW_AT_low_pc252	.byte	27                              # DW_FORM_addrx253	.byte	18                              # DW_AT_high_pc254	.byte	6                               # DW_FORM_data4255	.byte	64                              # DW_AT_frame_base256	.byte	24                              # DW_FORM_exprloc257	.byte	122                             # DW_AT_call_all_calls258	.byte	25                              # DW_FORM_flag_present259	.byte	3                               # DW_AT_name260	.byte	37                              # DW_FORM_strx1261	.byte	58                              # DW_AT_decl_file262	.byte	11                              # DW_FORM_data1263	.byte	59                              # DW_AT_decl_line264	.byte	11                              # DW_FORM_data1265	.byte	73                              # DW_AT_type266	.byte	19                              # DW_FORM_ref4267	.byte	63                              # DW_AT_external268	.byte	25                              # DW_FORM_flag_present269	.byte	0                               # EOM(1)270	.byte	0                               # EOM(2)271	.byte	0                               # EOM(3)272	.section	.debug_info,"",@progbits273.Lcu_begin0:274	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit275.Ldebug_info_start0:276	.short	5                               # DWARF version number277	.byte	1                               # DWARF Unit Type278	.byte	8                               # Address Size (in bytes)279	.long	.debug_abbrev                   # Offset Into Abbrev. Section280	.byte	1                               # Abbrev [1] 0xc:0x87 DW_TAG_compile_unit281	.byte	0                               # DW_AT_producer282	.short	33                              # DW_AT_language283	.byte	1                               # DW_AT_name284	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base285	.long	.Lline_table_start0             # DW_AT_stmt_list286	.byte	2                               # DW_AT_comp_dir287	.byte	2                               # DW_AT_low_pc288	.long	.Lfunc_end2-.Lfunc_begin0       # DW_AT_high_pc289	.long	.Laddr_table_base0              # DW_AT_addr_base290	.byte	2                               # Abbrev [2] 0x23:0x12 DW_TAG_variable291	.byte	3                               # DW_AT_name292	.long	53                              # DW_AT_type293	.byte	0                               # DW_AT_decl_file294	.byte	2                               # DW_AT_decl_line295	.byte	8                               # DW_AT_location296	.byte	161297	.byte	0298	.byte	147299	.byte	4300	.byte	161301	.byte	1302	.byte	147303	.byte	4304	.byte	8                               # DW_AT_linkage_name305	.byte	3                               # Abbrev [3] 0x35:0x19 DW_TAG_structure_type306	.byte	5                               # DW_AT_calling_convention307	.byte	7                               # DW_AT_name308	.byte	8                               # DW_AT_byte_size309	.byte	0                               # DW_AT_decl_file310	.byte	1                               # DW_AT_decl_line311	.byte	4                               # Abbrev [4] 0x3b:0x9 DW_TAG_member312	.byte	4                               # DW_AT_name313	.long	78                              # DW_AT_type314	.byte	0                               # DW_AT_decl_file315	.byte	1                               # DW_AT_decl_line316	.byte	0                               # DW_AT_data_member_location317	.byte	4                               # Abbrev [4] 0x44:0x9 DW_TAG_member318	.byte	6                               # DW_AT_name319	.long	78                              # DW_AT_type320	.byte	0                               # DW_AT_decl_file321	.byte	1                               # DW_AT_decl_line322	.byte	4                               # DW_AT_data_member_location323	.byte	0                               # End Of Children Mark324	.byte	5                               # Abbrev [5] 0x4e:0x4 DW_TAG_base_type325	.byte	5                               # DW_AT_name326	.byte	5                               # DW_AT_encoding327	.byte	4                               # DW_AT_byte_size328	.byte	6                               # Abbrev [6] 0x52:0x10 DW_TAG_subprogram329	.byte	2                               # DW_AT_low_pc330	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc331	.byte	1                               # DW_AT_frame_base332	.byte	87333                                        # DW_AT_call_all_calls334	.byte	9                               # DW_AT_linkage_name335	.byte	10                              # DW_AT_name336	.byte	0                               # DW_AT_decl_file337	.byte	3                               # DW_AT_decl_line338	.long	78                              # DW_AT_type339                                        # DW_AT_external340	.byte	7                               # Abbrev [7] 0x62:0x21 DW_TAG_subprogram341	.byte	3                               # DW_AT_low_pc342	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc343	.byte	1                               # DW_AT_frame_base344	.byte	87345                                        # DW_AT_call_all_calls346	.byte	11                              # DW_AT_linkage_name347	.byte	12                              # DW_AT_name348	.byte	0                               # DW_AT_decl_file349	.byte	6                               # DW_AT_decl_line350                                        # DW_AT_external351	.byte	8                               # Abbrev [8] 0x6e:0xa DW_TAG_formal_parameter352	.byte	1                               # DW_AT_location353	.byte	85354	.byte	4                               # DW_AT_name355	.byte	0                               # DW_AT_decl_file356	.byte	6                               # DW_AT_decl_line357	.long	78                              # DW_AT_type358	.byte	8                               # Abbrev [8] 0x78:0xa DW_TAG_formal_parameter359	.byte	1                               # DW_AT_location360	.byte	84361	.byte	6                               # DW_AT_name362	.byte	0                               # DW_AT_decl_file363	.byte	6                               # DW_AT_decl_line364	.long	78                              # DW_AT_type365	.byte	0                               # End Of Children Mark366	.byte	9                               # Abbrev [9] 0x83:0xf DW_TAG_subprogram367	.byte	4                               # DW_AT_low_pc368	.long	.Lfunc_end2-.Lfunc_begin2       # DW_AT_high_pc369	.byte	1                               # DW_AT_frame_base370	.byte	87371                                        # DW_AT_call_all_calls372	.byte	13                              # DW_AT_name373	.byte	0                               # DW_AT_decl_file374	.byte	10                              # DW_AT_decl_line375	.long	78                              # DW_AT_type376                                        # DW_AT_external377	.byte	0                               # End Of Children Mark378.Ldebug_info_end0:379	.section	.debug_str_offsets,"",@progbits380	.long	60                              # Length of String Offsets Set381	.short	5382	.short	0383.Lstr_offsets_base0:384	.section	.debug_str,"MS",@progbits,1385.Linfo_string0:386	.asciz	"clang version 15.0.0" # string offset=0387.Linfo_string1:388	.asciz	"main.cpp"                      # string offset=134389.Linfo_string2:390	.asciz	"test" # string offset=143391.Linfo_string3:392	.asciz	"p"                             # string offset=181393.Linfo_string4:394	.asciz	"i"                             # string offset=183395.Linfo_string5:396	.asciz	"int"                           # string offset=185397.Linfo_string6:398	.asciz	"j"                             # string offset=189399.Linfo_string7:400	.asciz	"pair"                          # string offset=191401.Linfo_string8:402	.asciz	"_ZL1p"                         # string offset=196403.Linfo_string9:404	.asciz	"_Z4loadv"                      # string offset=202405.Linfo_string10:406	.asciz	"load"                          # string offset=211407.Linfo_string11:408	.asciz	"_Z5storeii"                    # string offset=216409.Linfo_string12:410	.asciz	"store"                         # string offset=227411.Linfo_string13:412	.asciz	"main"                          # string offset=233413	.section	.debug_str_offsets,"",@progbits414	.long	.Linfo_string0415	.long	.Linfo_string1416	.long	.Linfo_string2417	.long	.Linfo_string3418	.long	.Linfo_string4419	.long	.Linfo_string5420	.long	.Linfo_string6421	.long	.Linfo_string7422	.long	.Linfo_string8423	.long	.Linfo_string9424	.long	.Linfo_string10425	.long	.Linfo_string11426	.long	.Linfo_string12427	.long	.Linfo_string13428	.section	.debug_addr,"",@progbits429	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution430.Ldebug_addr_start0:431	.short	5                               # DWARF version number432	.byte	8                               # Address size433	.byte	0                               # Segment selector size434.Laddr_table_base0:435	.quad	_ZL1p.0436	.quad	_ZL1p.1437	.quad	.Lfunc_begin0438	.quad	.Lfunc_begin1439	.quad	.Lfunc_begin2440.Ldebug_addr_end0:441	.ident	"clang version 15.0.0"442	.section	".note.GNU-stack","",@progbits443	.addrsig444	.section	.debug_line,"",@progbits445.Lline_table_start0:446