brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.7 KiB · 494fe43 Raw
409 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %s -o %t1.o4# RUN: %clang %cflags -dwarf-4 %t1.o -o %t.exe -Wl,-q5# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections -v 1 &> %tlog.txt6# RUN: cat %tlog.txt | FileCheck --check-prefix=CHECKBOLT %s7# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe | FileCheck --check-prefix=CHECK %s8 9## Tests BOLT does not assert when DIE reference is invalid.10 11# CHECKBOLT: Referenced DIE offsets not in .debug_info12# CHECKBOLT-NEXT: 9113# CHECK: DW_TAG_variable14# CHECK-NEXT: DW_AT_name15# CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x0091 => {0x00000091})16 17# Assembly manually modified18# struct pair {int i; int j; };19# static pair p;20# int load() {21#     return p.i + p.j;22# }23# void store(int i, int j) {24#     p.i = i;25#     p.j = j;26# }27# int main() {28# return 0;29# }30 31	.text32	.file	"main.cpp"33	.file	1 "/invalidWithin" "main.cpp"34	.section	.text._Z4loadv,"ax",@progbits35	.globl	_Z4loadv                        # -- Begin function _Z4loadv36	.p2align	4, 0x9037	.type	_Z4loadv,@function38_Z4loadv:                               # @_Z4loadv39.Lfunc_begin0:40	.cfi_startproc41# %bb.0:                                # %entry42	.loc	1 4 20 prologue_end             # main.cpp:4:2043	movl	_ZL1p.1(%rip), %eax44	.loc	1 4 16 is_stmt 0                # main.cpp:4:1645	addl	_ZL1p.0(%rip), %eax46	.loc	1 4 5                           # main.cpp:4:547	retq48.Ltmp0:49.Lfunc_end0:50	.size	_Z4loadv, .Lfunc_end0-_Z4loadv51	.cfi_endproc52                                        # -- End function53	.section	.text._Z5storeii,"ax",@progbits54	.globl	_Z5storeii                      # -- Begin function _Z5storeii55	.p2align	4, 0x9056	.type	_Z5storeii,@function57_Z5storeii:                             # @_Z5storeii58.Lfunc_begin1:59	.cfi_startproc60# %bb.0:                                # %entry61	#DEBUG_VALUE: store:i <- $edi62	#DEBUG_VALUE: store:j <- $esi63	.loc	1 7 9 prologue_end is_stmt 1    # main.cpp:7:964	movl	%edi, _ZL1p.0(%rip)65	.loc	1 8 9                           # main.cpp:8:966	movl	%esi, _ZL1p.1(%rip)67	.loc	1 9 1                           # main.cpp:9:168	retq69.Ltmp1:70.Lfunc_end1:71	.size	_Z5storeii, .Lfunc_end1-_Z5storeii72	.cfi_endproc73                                        # -- End function74	.section	.text.main,"ax",@progbits75	.globl	main                            # -- Begin function main76	.p2align	4, 0x9077	.type	main,@function78main:                                   # @main79.Lfunc_begin2:80	.cfi_startproc81# %bb.0:                                # %entry82	.loc	1 11 1 prologue_end             # main.cpp:11:183	xorl	%eax, %eax84	retq85.Ltmp2:86.Lfunc_end2:87	.size	main, .Lfunc_end2-main88	.cfi_endproc89                                        # -- End function90	.type	_ZL1p.0,@object                 # @_ZL1p.091	.local	_ZL1p.092	.comm	_ZL1p.0,4,493	.type	_ZL1p.1,@object                 # @_ZL1p.194	.local	_ZL1p.195	.comm	_ZL1p.1,4,496	.section	.debug_abbrev,"",@progbits97	.byte	1                               # Abbreviation Code98	.byte	17                              # DW_TAG_compile_unit99	.byte	1                               # DW_CHILDREN_yes100	.byte	37                              # DW_AT_producer101	.byte	14                              # DW_FORM_strp102	.byte	19                              # DW_AT_language103	.byte	5                               # DW_FORM_data2104	.byte	3                               # DW_AT_name105	.byte	14                              # DW_FORM_strp106	.byte	16                              # DW_AT_stmt_list107	.byte	23                              # DW_FORM_sec_offset108	.byte	27                              # DW_AT_comp_dir109	.byte	14                              # DW_FORM_strp110	.byte	17                              # DW_AT_low_pc111	.byte	1                               # DW_FORM_addr112	.byte	85                              # DW_AT_ranges113	.byte	23                              # DW_FORM_sec_offset114	.byte	0                               # EOM(1)115	.byte	0                               # EOM(2)116	.byte	2                               # Abbreviation Code117	.byte	52                              # DW_TAG_variable118	.byte	0                               # DW_CHILDREN_no119	.byte	3                               # DW_AT_name120	.byte	14                              # DW_FORM_strp121	.byte	73                              # DW_AT_type122	.byte	19                              # DW_FORM_ref4123	.byte	58                              # DW_AT_decl_file124	.byte	11                              # DW_FORM_data1125	.byte	59                              # DW_AT_decl_line126	.byte	11                              # DW_FORM_data1127	.byte	2                               # DW_AT_location128	.byte	24                              # DW_FORM_exprloc129	.byte	110                             # DW_AT_linkage_name130	.byte	14                              # DW_FORM_strp131	.byte	0                               # EOM(1)132	.byte	0                               # EOM(2)133	.byte	3                               # Abbreviation Code134	.byte	19                              # DW_TAG_structure_type135	.byte	1                               # DW_CHILDREN_yes136	.byte	54                              # DW_AT_calling_convention137	.byte	11                              # DW_FORM_data1138	.byte	3                               # DW_AT_name139	.byte	14                              # DW_FORM_strp140	.byte	11                              # DW_AT_byte_size141	.byte	11                              # DW_FORM_data1142	.byte	58                              # DW_AT_decl_file143	.byte	11                              # DW_FORM_data1144	.byte	59                              # DW_AT_decl_line145	.byte	11                              # DW_FORM_data1146	.byte	0                               # EOM(1)147	.byte	0                               # EOM(2)148	.byte	4                               # Abbreviation Code149	.byte	13                              # DW_TAG_member150	.byte	0                               # DW_CHILDREN_no151	.byte	3                               # DW_AT_name152	.byte	14                              # DW_FORM_strp153	.byte	73                              # DW_AT_type154	.byte	19                              # DW_FORM_ref4155	.byte	58                              # DW_AT_decl_file156	.byte	11                              # DW_FORM_data1157	.byte	59                              # DW_AT_decl_line158	.byte	11                              # DW_FORM_data1159	.byte	56                              # DW_AT_data_member_location160	.byte	11                              # DW_FORM_data1161	.byte	0                               # EOM(1)162	.byte	0                               # EOM(2)163	.byte	5                               # Abbreviation Code164	.byte	36                              # DW_TAG_base_type165	.byte	0                               # DW_CHILDREN_no166	.byte	3                               # DW_AT_name167	.byte	14                              # DW_FORM_strp168	.byte	62                              # DW_AT_encoding169	.byte	11                              # DW_FORM_data1170	.byte	11                              # DW_AT_byte_size171	.byte	11                              # DW_FORM_data1172	.byte	0                               # EOM(1)173	.byte	0                               # EOM(2)174	.byte	6                               # Abbreviation Code175	.byte	46                              # DW_TAG_subprogram176	.byte	0                               # DW_CHILDREN_no177	.byte	17                              # DW_AT_low_pc178	.byte	1                               # DW_FORM_addr179	.byte	18                              # DW_AT_high_pc180	.byte	6                               # DW_FORM_data4181	.byte	64                              # DW_AT_frame_base182	.byte	24                              # DW_FORM_exprloc183	.ascii	"\227B"                         # DW_AT_GNU_all_call_sites184	.byte	25                              # DW_FORM_flag_present185	.byte	110                             # DW_AT_linkage_name186	.byte	14                              # DW_FORM_strp187	.byte	3                               # DW_AT_name188	.byte	14                              # DW_FORM_strp189	.byte	58                              # DW_AT_decl_file190	.byte	11                              # DW_FORM_data1191	.byte	59                              # DW_AT_decl_line192	.byte	11                              # DW_FORM_data1193	.byte	73                              # DW_AT_type194	.byte	19                              # DW_FORM_ref4195	.byte	63                              # DW_AT_external196	.byte	25                              # DW_FORM_flag_present197	.byte	0                               # EOM(1)198	.byte	0                               # EOM(2)199	.byte	7                               # Abbreviation Code200	.byte	46                              # DW_TAG_subprogram201	.byte	1                               # DW_CHILDREN_yes202	.byte	17                              # DW_AT_low_pc203	.byte	1                               # DW_FORM_addr204	.byte	18                              # DW_AT_high_pc205	.byte	6                               # DW_FORM_data4206	.byte	64                              # DW_AT_frame_base207	.byte	24                              # DW_FORM_exprloc208	.ascii	"\227B"                         # DW_AT_GNU_all_call_sites209	.byte	25                              # DW_FORM_flag_present210	.byte	110                             # DW_AT_linkage_name211	.byte	14                              # DW_FORM_strp212	.byte	3                               # DW_AT_name213	.byte	14                              # DW_FORM_strp214	.byte	58                              # DW_AT_decl_file215	.byte	11                              # DW_FORM_data1216	.byte	59                              # DW_AT_decl_line217	.byte	11                              # DW_FORM_data1218	.byte	63                              # DW_AT_external219	.byte	25                              # DW_FORM_flag_present220	.byte	0                               # EOM(1)221	.byte	0                               # EOM(2)222	.byte	8                               # Abbreviation Code223	.byte	5                               # DW_TAG_formal_parameter224	.byte	0                               # DW_CHILDREN_no225	.byte	2                               # DW_AT_location226	.byte	24                              # DW_FORM_exprloc227	.byte	3                               # DW_AT_name228	.byte	14                              # DW_FORM_strp229	.byte	58                              # DW_AT_decl_file230	.byte	11                              # DW_FORM_data1231	.byte	59                              # DW_AT_decl_line232	.byte	11                              # DW_FORM_data1233	.byte	73                              # DW_AT_type234	.byte	19                              # DW_FORM_ref4235	.byte	0                               # EOM(1)236	.byte	0                               # EOM(2)237	.byte	9                               # Abbreviation Code238	.byte	46                              # DW_TAG_subprogram239	.byte	0                               # DW_CHILDREN_no240	.byte	17                              # DW_AT_low_pc241	.byte	1                               # DW_FORM_addr242	.byte	18                              # DW_AT_high_pc243	.byte	6                               # DW_FORM_data4244	.byte	64                              # DW_AT_frame_base245	.byte	24                              # DW_FORM_exprloc246	.ascii	"\227B"                         # DW_AT_GNU_all_call_sites247	.byte	25                              # DW_FORM_flag_present248	.byte	3                               # DW_AT_name249	.byte	14                              # DW_FORM_strp250	.byte	58                              # DW_AT_decl_file251	.byte	11                              # DW_FORM_data1252	.byte	59                              # DW_AT_decl_line253	.byte	11                              # DW_FORM_data1254	.byte	73                              # DW_AT_type255	.byte	19                              # DW_FORM_ref4256	.byte	63                              # DW_AT_external257	.byte	25                              # DW_FORM_flag_present258	.byte	0                               # EOM(1)259	.byte	0                               # EOM(2)260	.byte	0                               # EOM(3)261	.section	.debug_info,"",@progbits262.Lcu_begin0:263	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit264.Ldebug_info_start0:265	.short	4                               # DWARF version number266	.long	.debug_abbrev                   # Offset Into Abbrev. Section267	.byte	8                               # Address Size (in bytes)268	.byte	1                               # Abbrev [1] 0xb:0xd9 DW_TAG_compile_unit269	.long	.Linfo_string0                  # DW_AT_producer270	.short	33                              # DW_AT_language271	.long	.Linfo_string1                  # DW_AT_name272	.long	.Lline_table_start0             # DW_AT_stmt_list273	.long	.Linfo_string2                  # DW_AT_comp_dir274	.quad	0                               # DW_AT_low_pc275	.long	.Ldebug_ranges0                 # DW_AT_ranges276	.byte	2                               # Abbrev [2] 0x2a:0x26 DW_TAG_variable277	.long	.Linfo_string3                  # DW_AT_name278	.long	145                              # DW_AT_type --> Modified manually s/80/145279	.byte	1                               # DW_AT_decl_file280	.byte	2                               # DW_AT_decl_line281	.byte	22                              # DW_AT_location282	.byte	3283	.quad	_ZL1p.0284	.byte	147285	.byte	4286	.byte	3287	.quad	_ZL1p.1288	.byte	147289	.byte	4290	.long	.Linfo_string8                  # DW_AT_linkage_name291	.byte	3                               # Abbrev [3] 0x50:0x22 DW_TAG_structure_type292	.byte	5                               # DW_AT_calling_convention293	.long	.Linfo_string7                  # DW_AT_name294	.byte	8                               # DW_AT_byte_size295	.byte	1                               # DW_AT_decl_file296	.byte	1                               # DW_AT_decl_line297	.byte	4                               # Abbrev [4] 0x59:0xc DW_TAG_member298	.long	.Linfo_string4                  # DW_AT_name299	.long	114                             # DW_AT_type300	.byte	1                               # DW_AT_decl_file301	.byte	1                               # DW_AT_decl_line302	.byte	0                               # DW_AT_data_member_location303	.byte	4                               # Abbrev [4] 0x65:0xc DW_TAG_member304	.long	.Linfo_string6                  # DW_AT_name305	.long	114                             # DW_AT_type306	.byte	1                               # DW_AT_decl_file307	.byte	1                               # DW_AT_decl_line308	.byte	4                               # DW_AT_data_member_location309	.byte	0                               # End Of Children Mark310	.byte	5                               # Abbrev [5] 0x72:0x7 DW_TAG_base_type311	.long	.Linfo_string5                  # DW_AT_name312	.byte	5                               # DW_AT_encoding313	.byte	4                               # DW_AT_byte_size314	.byte	6                               # Abbrev [6] 0x79:0x1d DW_TAG_subprogram315	.quad	.Lfunc_begin0                   # DW_AT_low_pc316	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc317	.byte	1                               # DW_AT_frame_base318	.byte	87319                                        # DW_AT_GNU_all_call_sites320	.long	.Linfo_string9                  # DW_AT_linkage_name321	.long	.Linfo_string10                 # DW_AT_name322	.byte	1                               # DW_AT_decl_file323	.byte	3                               # DW_AT_decl_line324	.long	114                             # DW_AT_type325                                        # DW_AT_external326	.byte	7                               # Abbrev [7] 0x96:0x34 DW_TAG_subprogram327	.quad	.Lfunc_begin1                   # DW_AT_low_pc328	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc329	.byte	1                               # DW_AT_frame_base330	.byte	87331                                        # DW_AT_GNU_all_call_sites332	.long	.Linfo_string11                 # DW_AT_linkage_name333	.long	.Linfo_string12                 # DW_AT_name334	.byte	1                               # DW_AT_decl_file335	.byte	6                               # DW_AT_decl_line336                                        # DW_AT_external337	.byte	8                               # Abbrev [8] 0xaf:0xd DW_TAG_formal_parameter338	.byte	1                               # DW_AT_location339	.byte	85340	.long	.Linfo_string4                  # DW_AT_name341	.byte	1                               # DW_AT_decl_file342	.byte	6                               # DW_AT_decl_line343	.long	114                             # DW_AT_type344	.byte	8                               # Abbrev [8] 0xbc:0xd DW_TAG_formal_parameter345	.byte	1                               # DW_AT_location346	.byte	84347	.long	.Linfo_string6                  # DW_AT_name348	.byte	1                               # DW_AT_decl_file349	.byte	6                               # DW_AT_decl_line350	.long	114                             # DW_AT_type351	.byte	0                               # End Of Children Mark352	.byte	9                               # Abbrev [9] 0xca:0x19 DW_TAG_subprogram353	.quad	.Lfunc_begin2                   # DW_AT_low_pc354	.long	.Lfunc_end2-.Lfunc_begin2       # DW_AT_high_pc355	.byte	1                               # DW_AT_frame_base356	.byte	87357                                        # DW_AT_GNU_all_call_sites358	.long	.Linfo_string13                 # DW_AT_name359	.byte	1                               # DW_AT_decl_file360	.byte	10                              # DW_AT_decl_line361	.long	114                             # DW_AT_type362                                        # DW_AT_external363	.byte	0                               # End Of Children Mark364.Ldebug_info_end0:365	.section	.debug_ranges,"",@progbits366.Ldebug_ranges0:367	.quad	.Lfunc_begin0368	.quad	.Lfunc_end0369	.quad	.Lfunc_begin1370	.quad	.Lfunc_end1371	.quad	.Lfunc_begin2372	.quad	.Lfunc_end2373	.quad	0374	.quad	0375	.section	.debug_str,"MS",@progbits,1376.Linfo_string0:377	.asciz	"clang version 18.0.0 (git@github.com:llvm/llvm-project.git 37d6c1cc7d4dd3a8a47ba62254bc88521bd50d66)" # string offset=0378.Linfo_string1:379	.asciz	"main.cpp"                      # string offset=101380.Linfo_string2:381	.asciz	"/invalidWithin" # string offset=110382.Linfo_string3:383	.asciz	"p"                             # string offset=162384.Linfo_string4:385	.asciz	"i"                             # string offset=164386.Linfo_string5:387	.asciz	"int"                           # string offset=166388.Linfo_string6:389	.asciz	"j"                             # string offset=170390.Linfo_string7:391	.asciz	"pair"                          # string offset=172392.Linfo_string8:393	.asciz	"_ZL1p"                         # string offset=177394.Linfo_string9:395	.asciz	"_Z4loadv"                      # string offset=183396.Linfo_string10:397	.asciz	"load"                          # string offset=192398.Linfo_string11:399	.asciz	"_Z5storeii"                    # string offset=197400.Linfo_string12:401	.asciz	"store"                         # string offset=208402.Linfo_string13:403	.asciz	"main"                          # string offset=214404	.ident	"clang version 18.0.0 (git@github.com:llvm/llvm-project.git 37d6c1cc7d4dd3a8a47ba62254bc88521bd50d66)"405	.section	".note.GNU-stack","",@progbits406	.addrsig407	.section	.debug_line,"",@progbits408.Lline_table_start0:409