brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · 1e3fc17 Raw
306 lines · plain
1 2# REQUIRES: system-linux3 4# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o5# RUN: %clang %cflags -dwarf-5 %tmain.o -o %t.exe -Wl,-q6# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections7# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe | FileCheck --check-prefix=PRECHECK %s8 9# RUN: llvm-dwarfdump --show-form --verbose --debug-addr %t.bolt > %t.txt10# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt >> %t.txt11# RUN: llvm-objdump -d %t.bolt >> %t.txt12# RUN: cat %t.txt | FileCheck --check-prefix=POSTCHECK %s13 14## This test checks that we correctly handle DW_AT_low_pc [DW_FORM_addrx] that is part of DW_TAG_label.15 16# PRECHECK: version = 0x000517# PRECHECK: DW_TAG_label18# PRECHECK-NEXT: DW_AT_name19# PRECHECK-NEXT: DW_AT_decl_file20# PRECHECK-NEXT: DW_AT_decl_line21# PRECHECK-NEXT:DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)22# PRECHECK: DW_TAG_label23# PRECHECK-NEXT: DW_AT_name24# PRECHECK-NEXT: DW_AT_decl_file25# PRECHECK-NEXT: DW_AT_decl_line26# PRECHECK-NEXT:DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000002)27 28 29# POSTCHECK: Addrs: [30# POSTCHECK-NEXT: 0x31# POSTCHECK-NEXT: 0x32# POSTCHECK-NEXT: 0x[[ADDR:[1-9a-f]*]]33# POSTCHECK-NEXT: 0x[[ADDR2:[1-9a-f]*]]34 35# POSTCHECK: version = 0x000536# POSTCHECK: DW_TAG_label37# POSTCHECK-NEXT: DW_AT_name38# POSTCHECK-NEXT: DW_AT_decl_file39# POSTCHECK-NEXT: DW_AT_decl_line40# POSTCHECK-NEXT:DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000002)41# POSTCHECK-SAME: 0x[[ADDR]]42# POSTCHECK: DW_TAG_label43# POSTCHECK-NEXT: DW_AT_name44# POSTCHECK-NEXT: DW_AT_decl_file45# POSTCHECK-NEXT: DW_AT_decl_line46# POSTCHECK-NEXT:DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000003)47# POSTCHECK-SAME: 0x[[ADDR2]]48 49# POSTCHECK: [[ADDR]]: 8b 45 f850# POSTCHECK: [[ADDR2]]: 8b 45 f851 52## clang++ main.cpp -g -S53## int main() {54##   int a = 4;55##   if (a == 5)56##     goto LABEL1;57##   else58##     goto LABEL2;59##   LABEL1:a++;60##   LABEL2:a--;61##   return 0;62## }63 64	.text65	.file	"main.cpp"66	.globl	main                            # -- Begin function main67	.p2align	4, 0x9068	.type	main,@function69main:                                   # @main70.Lfunc_begin0:71	.file	0 "/testLabel" "main.cpp" md5 0xa0bd66020d06f1303de7008e3c54205072	.loc	0 1 0                           # main.cpp:1:073	.cfi_startproc74# %bb.0:                                # %entry75	pushq	%rbp76	.cfi_def_cfa_offset 1677	.cfi_offset %rbp, -1678	movq	%rsp, %rbp79	.cfi_def_cfa_register %rbp80	movl	$0, -4(%rbp)81.Ltmp0:82	.loc	0 2 7 prologue_end              # main.cpp:2:783	movl	$4, -8(%rbp)84.Ltmp1:85	.loc	0 3 9                           # main.cpp:3:986	cmpl	$5, -8(%rbp)87.Ltmp2:88	.loc	0 3 7 is_stmt 0                 # main.cpp:3:789	jne	.LBB0_290# %bb.1:                                # %if.then91.Ltmp3:92	.loc	0 4 5 is_stmt 1                 # main.cpp:4:593	jmp	.LBB0_394.LBB0_2:                                # %if.else95	.loc	0 6 5                           # main.cpp:6:596	jmp	.LBB0_497.Ltmp4:98.LBB0_3:                                # %LABEL199	#DEBUG_LABEL: main:LABEL1100	.loc	0 7 11                          # main.cpp:7:11101	movl	-8(%rbp), %eax102	addl	$1, %eax103	movl	%eax, -8(%rbp)104.LBB0_4:                                # %LABEL2105.Ltmp5:106	#DEBUG_LABEL: main:LABEL2107	.loc	0 8 11                          # main.cpp:8:11108	movl	-8(%rbp), %eax109	addl	$-1, %eax110	movl	%eax, -8(%rbp)111	.loc	0 9 3                           # main.cpp:9:3112	xorl	%eax, %eax113	popq	%rbp114	.cfi_def_cfa %rsp, 8115	retq116.Ltmp6:117.Lfunc_end0:118	.size	main, .Lfunc_end0-main119	.cfi_endproc120                                        # -- End function121	.section	.debug_abbrev,"",@progbits122	.byte	1                               # Abbreviation Code123	.byte	17                              # DW_TAG_compile_unit124	.byte	1                               # DW_CHILDREN_yes125	.byte	37                              # DW_AT_producer126	.byte	37                              # DW_FORM_strx1127	.byte	19                              # DW_AT_language128	.byte	5                               # DW_FORM_data2129	.byte	3                               # DW_AT_name130	.byte	37                              # DW_FORM_strx1131	.byte	114                             # DW_AT_str_offsets_base132	.byte	23                              # DW_FORM_sec_offset133	.byte	16                              # DW_AT_stmt_list134	.byte	23                              # DW_FORM_sec_offset135	.byte	27                              # DW_AT_comp_dir136	.byte	37                              # DW_FORM_strx1137	.byte	17                              # DW_AT_low_pc138	.byte	27                              # DW_FORM_addrx139	.byte	18                              # DW_AT_high_pc140	.byte	6                               # DW_FORM_data4141	.byte	115                             # DW_AT_addr_base142	.byte	23                              # DW_FORM_sec_offset143	.byte	0                               # EOM(1)144	.byte	0                               # EOM(2)145	.byte	2                               # Abbreviation Code146	.byte	46                              # DW_TAG_subprogram147	.byte	1                               # DW_CHILDREN_yes148	.byte	17                              # DW_AT_low_pc149	.byte	27                              # DW_FORM_addrx150	.byte	18                              # DW_AT_high_pc151	.byte	6                               # DW_FORM_data4152	.byte	64                              # DW_AT_frame_base153	.byte	24                              # DW_FORM_exprloc154	.byte	3                               # DW_AT_name155	.byte	37                              # DW_FORM_strx1156	.byte	58                              # DW_AT_decl_file157	.byte	11                              # DW_FORM_data1158	.byte	59                              # DW_AT_decl_line159	.byte	11                              # DW_FORM_data1160	.byte	73                              # DW_AT_type161	.byte	19                              # DW_FORM_ref4162	.byte	63                              # DW_AT_external163	.byte	25                              # DW_FORM_flag_present164	.byte	0                               # EOM(1)165	.byte	0                               # EOM(2)166	.byte	3                               # Abbreviation Code167	.byte	52                              # DW_TAG_variable168	.byte	0                               # DW_CHILDREN_no169	.byte	2                               # DW_AT_location170	.byte	24                              # DW_FORM_exprloc171	.byte	3                               # DW_AT_name172	.byte	37                              # DW_FORM_strx1173	.byte	58                              # DW_AT_decl_file174	.byte	11                              # DW_FORM_data1175	.byte	59                              # DW_AT_decl_line176	.byte	11                              # DW_FORM_data1177	.byte	73                              # DW_AT_type178	.byte	19                              # DW_FORM_ref4179	.byte	0                               # EOM(1)180	.byte	0                               # EOM(2)181	.byte	4                               # Abbreviation Code182	.byte	10                              # DW_TAG_label183	.byte	0                               # DW_CHILDREN_no184	.byte	3                               # DW_AT_name185	.byte	37                              # DW_FORM_strx1186	.byte	58                              # DW_AT_decl_file187	.byte	11                              # DW_FORM_data1188	.byte	59                              # DW_AT_decl_line189	.byte	11                              # DW_FORM_data1190	.byte	17                              # DW_AT_low_pc191	.byte	27                              # DW_FORM_addrx192	.byte	0                               # EOM(1)193	.byte	0                               # EOM(2)194	.byte	5                               # Abbreviation Code195	.byte	36                              # DW_TAG_base_type196	.byte	0                               # DW_CHILDREN_no197	.byte	3                               # DW_AT_name198	.byte	37                              # DW_FORM_strx1199	.byte	62                              # DW_AT_encoding200	.byte	11                              # DW_FORM_data1201	.byte	11                              # DW_AT_byte_size202	.byte	11                              # DW_FORM_data1203	.byte	0                               # EOM(1)204	.byte	0                               # EOM(2)205	.byte	0                               # EOM(3)206	.section	.debug_info,"",@progbits207.Lcu_begin0:208	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit209.Ldebug_info_start0:210	.short	5                               # DWARF version number211	.byte	1                               # DWARF Unit Type212	.byte	8                               # Address Size (in bytes)213	.long	.debug_abbrev                   # Offset Into Abbrev. Section214	.byte	1                               # Abbrev [1] 0xc:0x41 DW_TAG_compile_unit215	.byte	0                               # DW_AT_producer216	.short	33                              # DW_AT_language217	.byte	1                               # DW_AT_name218	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base219	.long	.Lline_table_start0             # DW_AT_stmt_list220	.byte	2                               # DW_AT_comp_dir221	.byte	0                               # DW_AT_low_pc222	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc223	.long	.Laddr_table_base0              # DW_AT_addr_base224	.byte	2                               # Abbrev [2] 0x23:0x25 DW_TAG_subprogram225	.byte	0                               # DW_AT_low_pc226	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc227	.byte	1                               # DW_AT_frame_base228	.byte	86229	.byte	3                               # DW_AT_name230	.byte	0                               # DW_AT_decl_file231	.byte	1                               # DW_AT_decl_line232	.long	72                              # DW_AT_type233                                        # DW_AT_external234	.byte	3                               # Abbrev [3] 0x32:0xb DW_TAG_variable235	.byte	2                               # DW_AT_location236	.byte	145237	.byte	120238	.byte	5                               # DW_AT_name239	.byte	0                               # DW_AT_decl_file240	.byte	2                               # DW_AT_decl_line241	.long	72                              # DW_AT_type242	.byte	4                               # Abbrev [4] 0x3d:0x5 DW_TAG_label243	.byte	6                               # DW_AT_name244	.byte	0                               # DW_AT_decl_file245	.byte	7                               # DW_AT_decl_line246	.byte	1                               # DW_AT_low_pc247	.byte	4                               # Abbrev [4] 0x42:0x5 DW_TAG_label248	.byte	7                               # DW_AT_name249	.byte	0                               # DW_AT_decl_file250	.byte	8                               # DW_AT_decl_line251	.byte	2                               # DW_AT_low_pc252	.byte	0                               # End Of Children Mark253	.byte	5                               # Abbrev [5] 0x48:0x4 DW_TAG_base_type254	.byte	4                               # DW_AT_name255	.byte	5                               # DW_AT_encoding256	.byte	4                               # DW_AT_byte_size257	.byte	0                               # End Of Children Mark258.Ldebug_info_end0:259	.section	.debug_str_offsets,"",@progbits260	.long	36                              # Length of String Offsets Set261	.short	5262	.short	0263.Lstr_offsets_base0:264	.section	.debug_str,"MS",@progbits,1265.Linfo_string0:266	.asciz	"clang version 15.0.0" # string offset=0267.Linfo_string1:268	.asciz	"main.cpp"                      # string offset=134269.Linfo_string2:270	.asciz	"/testLabel" # string offset=143271.Linfo_string3:272	.asciz	"main"                          # string offset=190273.Linfo_string4:274	.asciz	"int"                           # string offset=195275.Linfo_string5:276	.asciz	"a"                             # string offset=199277.Linfo_string6:278	.asciz	"LABEL1"                        # string offset=201279.Linfo_string7:280	.asciz	"LABEL2"                        # string offset=208281	.section	.debug_str_offsets,"",@progbits282	.long	.Linfo_string0283	.long	.Linfo_string1284	.long	.Linfo_string2285	.long	.Linfo_string3286	.long	.Linfo_string4287	.long	.Linfo_string5288	.long	.Linfo_string6289	.long	.Linfo_string7290	.section	.debug_addr,"",@progbits291	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution292.Ldebug_addr_start0:293	.short	5                               # DWARF version number294	.byte	8                               # Address size295	.byte	0                               # Segment selector size296.Laddr_table_base0:297	.quad	.Lfunc_begin0298	.quad	.Ltmp4299	.quad	.Ltmp5300.Ldebug_addr_end0:301	.ident	"clang version 15.0.0"302	.section	".note.GNU-stack","",@progbits303	.addrsig304	.section	.debug_line,"",@progbits305.Lline_table_start0:306