brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · dfd5af1 Raw
264 lines · plain
1 2# REQUIRES: system-linux3 4# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o5# RUN: %clang %cflags -dwarf-4 %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# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt > %t.txt9# RUN: llvm-objdump -d %t.bolt >> %t.txt10# RUN: cat %t.txt | FileCheck --check-prefix=POSTCHECK %s11 12## This test checks that we correctly handle DW_AT_low_pc [DW_FORM_addr] that is part of DW_TAG_label.13 14# PRECHECK: version = 0x000415# PRECHECK: DW_TAG_label16# PRECHECK-NEXT: DW_AT_name17# PRECHECK-NEXT: DW_AT_decl_file18# PRECHECK-NEXT: DW_AT_decl_line19# PRECHECK-NEXT:DW_AT_low_pc [DW_FORM_addr]20# PRECHECK: DW_TAG_label21# PRECHECK-NEXT: DW_AT_name22# PRECHECK-NEXT: DW_AT_decl_file23# PRECHECK-NEXT: DW_AT_decl_line24# PRECHECK-NEXT:DW_AT_low_pc [DW_FORM_addr]25 26# POSTCHECK: version = 0x000427# POSTCHECK: DW_TAG_label28# POSTCHECK-NEXT: DW_AT_name29# POSTCHECK-NEXT: DW_AT_decl_file30# POSTCHECK-NEXT: DW_AT_decl_line31# POSTCHECK-NEXT:DW_AT_low_pc [DW_FORM_addr] (0x[[ADDR:[1-9a-f]*]]32# POSTCHECK: DW_TAG_label33# POSTCHECK-NEXT: DW_AT_name34# POSTCHECK-NEXT: DW_AT_decl_file35# POSTCHECK-NEXT: DW_AT_decl_line36# POSTCHECK-NEXT:DW_AT_low_pc [DW_FORM_addr] (0x[[ADDR2:[1-9a-f]*]]37 38# POSTCHECK: [[ADDR]]: 8b 45 f839# POSTCHECK: [[ADDR2]]: 8b 45 f840 41## clang++ main.cpp -g2 -gdwarf-4 -S42## int main() {43##   int a = 4;44##   if (a == 5)45##     goto LABEL1;46##   else47##     goto LABEL2;48##   LABEL1:a++;49##   LABEL2:a--;50##   return 0;51## }52 53		.text54	.file	"main.cpp"55	.globl	main                            # -- Begin function main56	.p2align	4, 0x9057	.type	main,@function58main:                                   # @main59.Lfunc_begin0:60	.file	1 "/home" "main.cpp"61	.loc	1 1 0                           # main.cpp:1:062	.cfi_startproc63# %bb.0:                                # %entry64	pushq	%rbp65	.cfi_def_cfa_offset 1666	.cfi_offset %rbp, -1667	movq	%rsp, %rbp68	.cfi_def_cfa_register %rbp69	movl	$0, -4(%rbp)70.Ltmp0:71	.loc	1 2 7 prologue_end              # main.cpp:2:772	movl	$4, -8(%rbp)73.Ltmp1:74	.loc	1 3 9                           # main.cpp:3:975	cmpl	$5, -8(%rbp)76.Ltmp2:77	.loc	1 3 7 is_stmt 0                 # main.cpp:3:778	jne	.LBB0_279# %bb.1:                                # %if.then80.Ltmp3:81	.loc	1 4 5 is_stmt 1                 # main.cpp:4:582	jmp	.LBB0_383.LBB0_2:                                # %if.else84	.loc	1 6 5                           # main.cpp:6:585	jmp	.LBB0_486.Ltmp4:87.LBB0_3:                                # %LABEL188	#DEBUG_LABEL: main:LABEL189	.loc	1 7 11                          # main.cpp:7:1190	movl	-8(%rbp), %eax91	addl	$1, %eax92	movl	%eax, -8(%rbp)93.LBB0_4:                                # %LABEL294.Ltmp5:95	#DEBUG_LABEL: main:LABEL296	.loc	1 8 11                          # main.cpp:8:1197	movl	-8(%rbp), %eax98	addl	$-1, %eax99	movl	%eax, -8(%rbp)100	.loc	1 9 3                           # main.cpp:9:3101	xorl	%eax, %eax102	.loc	1 9 3 epilogue_begin is_stmt 0  # main.cpp:9:3103	popq	%rbp104	.cfi_def_cfa %rsp, 8105	retq106.Ltmp6:107.Lfunc_end0:108	.size	main, .Lfunc_end0-main109	.cfi_endproc110                                        # -- End function111	.section	.debug_abbrev,"",@progbits112	.byte	1                               # Abbreviation Code113	.byte	17                              # DW_TAG_compile_unit114	.byte	1                               # DW_CHILDREN_yes115	.byte	37                              # DW_AT_producer116	.byte	14                              # DW_FORM_strp117	.byte	19                              # DW_AT_language118	.byte	5                               # DW_FORM_data2119	.byte	3                               # DW_AT_name120	.byte	14                              # DW_FORM_strp121	.byte	16                              # DW_AT_stmt_list122	.byte	23                              # DW_FORM_sec_offset123	.byte	27                              # DW_AT_comp_dir124	.byte	14                              # DW_FORM_strp125	.byte	17                              # DW_AT_low_pc126	.byte	1                               # DW_FORM_addr127	.byte	18                              # DW_AT_high_pc128	.byte	6                               # DW_FORM_data4129	.byte	0                               # EOM(1)130	.byte	0                               # EOM(2)131	.byte	2                               # Abbreviation Code132	.byte	46                              # DW_TAG_subprogram133	.byte	1                               # DW_CHILDREN_yes134	.byte	17                              # DW_AT_low_pc135	.byte	1                               # DW_FORM_addr136	.byte	18                              # DW_AT_high_pc137	.byte	6                               # DW_FORM_data4138	.byte	64                              # DW_AT_frame_base139	.byte	24                              # DW_FORM_exprloc140	.byte	3                               # DW_AT_name141	.byte	14                              # DW_FORM_strp142	.byte	58                              # DW_AT_decl_file143	.byte	11                              # DW_FORM_data1144	.byte	59                              # DW_AT_decl_line145	.byte	11                              # DW_FORM_data1146	.byte	73                              # DW_AT_type147	.byte	19                              # DW_FORM_ref4148	.byte	63                              # DW_AT_external149	.byte	25                              # DW_FORM_flag_present150	.byte	0                               # EOM(1)151	.byte	0                               # EOM(2)152	.byte	3                               # Abbreviation Code153	.byte	52                              # DW_TAG_variable154	.byte	0                               # DW_CHILDREN_no155	.byte	2                               # DW_AT_location156	.byte	24                              # DW_FORM_exprloc157	.byte	3                               # DW_AT_name158	.byte	14                              # DW_FORM_strp159	.byte	58                              # DW_AT_decl_file160	.byte	11                              # DW_FORM_data1161	.byte	59                              # DW_AT_decl_line162	.byte	11                              # DW_FORM_data1163	.byte	73                              # DW_AT_type164	.byte	19                              # DW_FORM_ref4165	.byte	0                               # EOM(1)166	.byte	0                               # EOM(2)167	.byte	4                               # Abbreviation Code168	.byte	10                              # DW_TAG_label169	.byte	0                               # DW_CHILDREN_no170	.byte	3                               # DW_AT_name171	.byte	14                              # DW_FORM_strp172	.byte	58                              # DW_AT_decl_file173	.byte	11                              # DW_FORM_data1174	.byte	59                              # DW_AT_decl_line175	.byte	11                              # DW_FORM_data1176	.byte	17                              # DW_AT_low_pc177	.byte	1                               # DW_FORM_addr178	.byte	0                               # EOM(1)179	.byte	0                               # EOM(2)180	.byte	5                               # Abbreviation Code181	.byte	36                              # DW_TAG_base_type182	.byte	0                               # DW_CHILDREN_no183	.byte	3                               # DW_AT_name184	.byte	14                              # DW_FORM_strp185	.byte	62                              # DW_AT_encoding186	.byte	11                              # DW_FORM_data1187	.byte	11                              # DW_AT_byte_size188	.byte	11                              # DW_FORM_data1189	.byte	0                               # EOM(1)190	.byte	0                               # EOM(2)191	.byte	0                               # EOM(3)192	.section	.debug_info,"",@progbits193.Lcu_begin0:194	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit195.Ldebug_info_start0:196	.short	4                               # DWARF version number197	.long	.debug_abbrev                   # Offset Into Abbrev. Section198	.byte	8                               # Address Size (in bytes)199	.byte	1                               # Abbrev [1] 0xb:0x6d DW_TAG_compile_unit200	.long	.Linfo_string0                  # DW_AT_producer201	.short	33                              # DW_AT_language202	.long	.Linfo_string1                  # DW_AT_name203	.long	.Lline_table_start0             # DW_AT_stmt_list204	.long	.Linfo_string2                  # DW_AT_comp_dir205	.quad	.Lfunc_begin0                   # DW_AT_low_pc206	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc207	.byte	2                               # Abbrev [2] 0x2a:0x46 DW_TAG_subprogram208	.quad	.Lfunc_begin0                   # DW_AT_low_pc209	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc210	.byte	1                               # DW_AT_frame_base211	.byte	86212	.long	.Linfo_string3                  # DW_AT_name213	.byte	1                               # DW_AT_decl_file214	.byte	1                               # DW_AT_decl_line215	.long	112                             # DW_AT_type216                                        # DW_AT_external217	.byte	3                               # Abbrev [3] 0x43:0xe DW_TAG_variable218	.byte	2                               # DW_AT_location219	.byte	145220	.byte	120221	.long	.Linfo_string5                  # DW_AT_name222	.byte	1                               # DW_AT_decl_file223	.byte	2                               # DW_AT_decl_line224	.long	112                             # DW_AT_type225	.byte	4                               # Abbrev [4] 0x51:0xf DW_TAG_label226	.long	.Linfo_string6                  # DW_AT_name227	.byte	1                               # DW_AT_decl_file228	.byte	7                               # DW_AT_decl_line229	.quad	.Ltmp4                          # DW_AT_low_pc230	.byte	4                               # Abbrev [4] 0x60:0xf DW_TAG_label231	.long	.Linfo_string7                  # DW_AT_name232	.byte	1                               # DW_AT_decl_file233	.byte	8                               # DW_AT_decl_line234	.quad	.Ltmp5                          # DW_AT_low_pc235	.byte	0                               # End Of Children Mark236	.byte	5                               # Abbrev [5] 0x70:0x7 DW_TAG_base_type237	.long	.Linfo_string4                  # DW_AT_name238	.byte	5                               # DW_AT_encoding239	.byte	4                               # DW_AT_byte_size240	.byte	0                               # End Of Children Mark241.Ldebug_info_end0:242	.section	.debug_str,"MS",@progbits,1243.Linfo_string0:244	.asciz	"clang version 19.0.0git"       # string offset=0245.Linfo_string1:246	.asciz	"main.cpp"                      # string offset=24247.Linfo_string2:248	.asciz	"/home" # string offset=33249.Linfo_string3:250	.asciz	"main"                          # string offset=71251.Linfo_string4:252	.asciz	"int"                           # string offset=76253.Linfo_string5:254	.asciz	"a"                             # string offset=80255.Linfo_string6:256	.asciz	"LABEL1"                        # string offset=82257.Linfo_string7:258	.asciz	"LABEL2"                        # string offset=89259	.ident	"clang version 19.0.0git"260	.section	".note.GNU-stack","",@progbits261	.addrsig262	.section	.debug_line,"",@progbits263.Lline_table_start0:264