[llvm-branch-commits] [llvm] 1816de0 - This adds a new test checking llvm-symbolizer with an object built with basic block sections.

Sriraman Tallam via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 8 22:17:10 PST 2021


Author: Sriraman Tallam
Date: 2021-01-08T22:12:36-08:00
New Revision: 1816de08232673e97ec41287ad3f6494bceaec43

URL: https://github.com/llvm/llvm-project/commit/1816de08232673e97ec41287ad3f6494bceaec43
DIFF: https://github.com/llvm/llvm-project/commit/1816de08232673e97ec41287ad3f6494bceaec43.diff

LOG: This adds a new test checking llvm-symbolizer with an object built with basic block sections.

Build a object with -fbasic-block-sections and reorder the basic blocks to be
non-contiguous. Then check if llvm-symbolizer correctly reports the symbolized
addresses. Included the source to build the object with command lines.

Differential Revision: https://reviews.llvm.org/D91678

Added: 
    llvm/test/DebugInfo/llvm-symbolizer-bbsections-test.s

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/DebugInfo/llvm-symbolizer-bbsections-test.s b/llvm/test/DebugInfo/llvm-symbolizer-bbsections-test.s
new file mode 100644
index 000000000000..822ce2628620
--- /dev/null
+++ b/llvm/test/DebugInfo/llvm-symbolizer-bbsections-test.s
@@ -0,0 +1,594 @@
+# REQUIRES: x86-registered-target
+# RUN: clang -c %s -o %t
+# RUN: llvm-symbolizer --obj=%t 0x30 0x20 0x6c 0xf | FileCheck %s
+
+# CHECK:      main
+# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:13
+# CHECK:      g
+# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:5
+# CHECK:      main
+# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:15
+# CHECK:      main
+# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:18
+# How to generate this file:
+#  int f(int a) {
+#    return a + 1;
+#  }
+#
+#  int g(int a) {
+#    return a + 2;
+#  }
+#
+#  int h(int a) {
+#    return a + 3;
+#  }
+#
+#  // Use simple control flow to generate lots of basic block sections.
+#  int main(int argc, char *argv[]) {
+#    if (argc > 10)
+#      return f(argc);
+#    else if (argc > 8)
+#      return g(argc);
+#    else if (argc > 4)
+#      return h(argc);
+#    return 0;
+#  }
+#
+#  $ clang -S -fbasic-block-sections=all llvm-symbolizer-bbsections-test.cc
+#  Manually reororder the sections to place them in this order:
+#   _Z1fi
+#   main.__part.4
+#   _Z1gi
+#   main
+#   _Z1hi
+#   main.__part.5
+#   (rest)
+#  Strip the .section .text directives to have all the functions in the same
+#  section.
+#  This ensures the basic blocks are reordered non-contiguous exactly like
+#  how a linker would do it.
+	.text
+	.file	"llvm-symbolizer-bbsections-test.c"
+	#.section .text._Z1fi,"ax", at progbits
+	.globl	_Z1fi                           # -- Begin function _Z1fi
+	.p2align	4, 0x90
+	.type	_Z1fi, at function
+_Z1fi:                                  # @_Z1fi
+.Lfunc_begin0:
+	.file	1 "Examples" "llvm-symbolizer-bbsections-test.c"
+	.loc	1 1 0                           # llvm-symbolizer-bbsections-test.c:1:0
+	.cfi_startproc
+# %bb.0:
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset %rbp, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register %rbp
+	movl	%edi, -4(%rbp)
+.Ltmp0:
+	.loc	1 2 10 prologue_end             # llvm-symbolizer-bbsections-test.c:2:10
+	movl	-4(%rbp), %eax
+	.loc	1 2 12 is_stmt 0                # llvm-symbolizer-bbsections-test.c:2:12
+	addl	$1, %eax
+	.loc	1 2 3                           # llvm-symbolizer-bbsections-test.c:2:3
+	popq	%rbp
+	.cfi_def_cfa %rsp, 8
+	retq
+.Ltmp1:
+	.cfi_endproc
+.Lfunc_end0:
+	.size	_Z1fi, .Lfunc_end0-_Z1fi
+                                        # -- End function
+	#.section text.main,"ax", at progbits,unique,4
+main.__part.4:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 18 17 is_stmt 1               # llvm-symbolizer-bbsections-test.c:18:17
+	cmpl	$4, -8(%rbp)
+.Ltmp9:
+	.loc	1 18 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:18:12
+	jle	main.__part.6
+	jmp	main.__part.5
+.LBB_END3_4:
+	.size	main.__part.4, .LBB_END3_4-main.__part.4
+	.cfi_endproc
+
+	#.section .text._Z1gi,"ax", at progbits
+	.globl	_Z1gi                           # -- Begin function _Z1gi
+	.p2align	4, 0x90
+	.type	_Z1gi, at function
+_Z1gi:                                  # @_Z1gi
+.Lfunc_begin1:
+	.loc	1 5 0 is_stmt 1                 # llvm-symbolizer-bbsections-test.c:5:0
+	.cfi_startproc
+# %bb.0:
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset %rbp, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register %rbp
+	movl	%edi, -4(%rbp)
+.Ltmp2:
+	.loc	1 6 10 prologue_end             # llvm-symbolizer-bbsections-test.c:6:10
+	movl	-4(%rbp), %eax
+	.loc	1 6 12 is_stmt 0                # llvm-symbolizer-bbsections-test.c:6:12
+	addl	$2, %eax
+	.loc	1 6 3                           # llvm-symbolizer-bbsections-test.c:6:3
+	popq	%rbp
+	.cfi_def_cfa %rsp, 8
+	retq
+.Ltmp3:
+	.cfi_endproc
+.Lfunc_end1:
+	.size	_Z1gi, .Lfunc_end1-_Z1gi
+                                        # -- End function
+	#.section .text.main,"ax", at progbits
+	.globl	main                            # -- Begin function main
+	.p2align	4, 0x90
+	.type	main, at function
+main:                                   # @main
+.Lfunc_begin3:
+	.loc	1 13 0 is_stmt 1                # llvm-symbolizer-bbsections-test.c:13:0
+	.cfi_startproc
+# %bb.0:
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset %rbp, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register %rbp
+	subq	$16, %rsp
+	movl	$0, -4(%rbp)
+	movl	%edi, -8(%rbp)
+	movq	%rsi, -16(%rbp)
+.Ltmp6:
+	.loc	1 14 12 prologue_end            # llvm-symbolizer-bbsections-test.c:14:12
+	cmpl	$10, -8(%rbp)
+.Ltmp7:
+	.loc	1 14 7 is_stmt 0                # llvm-symbolizer-bbsections-test.c:14:7
+	jle	main.__part.2
+	jmp	main.__part.1
+	.cfi_endproc
+        #.section .text._Z1hi,"ax", at progbits
+	.globl	_Z1hi                           # -- Begin function _Z1hi
+	.p2align	4, 0x90
+	.type	_Z1hi, at function
+_Z1hi:                                  # @_Z1hi
+.Lfunc_begin2:
+	.loc	1 9 0 is_stmt 1                 # llvm-symbolizer-bbsections-test.c:9:0
+	.cfi_startproc
+# %bb.0:
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset %rbp, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register %rbp
+	movl	%edi, -4(%rbp)
+.Ltmp4:
+	.loc	1 10 10 prologue_end            # llvm-symbolizer-bbsections-test.c:10:10
+	movl	-4(%rbp), %eax
+	.loc	1 10 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:10:12
+	addl	$3, %eax
+	.loc	1 10 3                          # llvm-symbolizer-bbsections-test.c:10:3
+	popq	%rbp
+	.cfi_def_cfa %rsp, 8
+	retq
+.Ltmp5:
+	.cfi_endproc
+.Lfunc_end2:
+	.size	_Z1hi, .Lfunc_end2-_Z1hi
+                                        # -- End function
+	#.section .text.main,"ax", at progbits,unique,5
+main.__part.5:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 19 14 is_stmt 1               # llvm-symbolizer-bbsections-test.c:19:14
+	movl	-8(%rbp), %edi
+	.loc	1 19 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:19:12
+	callq	_Z1hi
+	.loc	1 19 5                          # llvm-symbolizer-bbsections-test.c:19:5
+	movl	%eax, -4(%rbp)
+	jmp	main.__part.9
+.Ltmp10:
+.LBB_END3_5:
+	.size	main.__part.5, .LBB_END3_5-main.__part.5
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,1
+main.__part.1:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 15 14 is_stmt 1               # llvm-symbolizer-bbsections-test.c:15:14
+	movl	-8(%rbp), %edi
+	.loc	1 15 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:15:12
+	callq	_Z1fi
+	.loc	1 15 5                          # llvm-symbolizer-bbsections-test.c:15:5
+	movl	%eax, -4(%rbp)
+	jmp	main.__part.9
+.LBB_END3_1:
+	.size	main.__part.1, .LBB_END3_1-main.__part.1
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,2
+main.__part.2:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 16 17 is_stmt 1               # llvm-symbolizer-bbsections-test.c:16:17
+	cmpl	$8, -8(%rbp)
+.Ltmp8:
+	.loc	1 16 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:16:12
+	jle	main.__part.4
+	jmp	main.__part.3
+.LBB_END3_2:
+	.size	main.__part.2, .LBB_END3_2-main.__part.2
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,3
+main.__part.3:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 17 14 is_stmt 1               # llvm-symbolizer-bbsections-test.c:17:14
+	movl	-8(%rbp), %edi
+	.loc	1 17 12 is_stmt 0               # llvm-symbolizer-bbsections-test.c:17:12
+	callq	_Z1gi
+	.loc	1 17 5                          # llvm-symbolizer-bbsections-test.c:17:5
+	movl	%eax, -4(%rbp)
+	jmp	main.__part.9
+.LBB_END3_3:
+	.size	main.__part.3, .LBB_END3_3-main.__part.3
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,6
+main.__part.6:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 0 5                           # llvm-symbolizer-bbsections-test.c:0:5
+	jmp	main.__part.7
+	jmp	main.__part.7
+.LBB_END3_6:
+	.size	main.__part.6, .LBB_END3_6-main.__part.6
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,7
+main.__part.7:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	jmp	main.__part.8
+	jmp	main.__part.8
+.LBB_END3_7:
+	.size	main.__part.7, .LBB_END3_7-main.__part.7
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,8
+main.__part.8:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 20 3 is_stmt 1                # llvm-symbolizer-bbsections-test.c:20:3
+	movl	$0, -4(%rbp)
+	jmp	main.__part.9
+.LBB_END3_8:
+	.size	main.__part.8, .LBB_END3_8-main.__part.8
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits,unique,9
+main.__part.9:
+	.cfi_startproc
+	.cfi_def_cfa %rbp, 16
+	.cfi_offset %rbp, -16
+	.loc	1 21 1                          # llvm-symbolizer-bbsections-test.c:21:1
+	movl	-4(%rbp), %eax
+	addq	$16, %rsp
+	popq	%rbp
+	.cfi_def_cfa %rsp, 8
+	retq
+.Ltmp11:
+.LBB_END3_9:
+	.size	main.__part.9, .LBB_END3_9-main.__part.9
+	.cfi_endproc
+	#.section .text.main,"ax", at progbits
+.Lfunc_end3:
+	.size	main, .Lfunc_end3-main
+                                        # -- End function
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                               # Abbreviation Code
+	.byte	17                              # DW_TAG_compile_unit
+	.byte	1                               # DW_CHILDREN_yes
+	.byte	37                              # DW_AT_producer
+	.byte	14                              # DW_FORM_strp
+	.byte	19                              # DW_AT_language
+	.byte	5                               # DW_FORM_data2
+	.byte	3                               # DW_AT_name
+	.byte	14                              # DW_FORM_strp
+	.byte	16                              # DW_AT_stmt_list
+	.byte	23                              # DW_FORM_sec_offset
+	.byte	27                              # DW_AT_comp_dir
+	.byte	14                              # DW_FORM_strp
+	.byte	17                              # DW_AT_low_pc
+	.byte	1                               # DW_FORM_addr
+	.byte	85                              # DW_AT_ranges
+	.byte	23                              # DW_FORM_sec_offset
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	2                               # Abbreviation Code
+	.byte	46                              # DW_TAG_subprogram
+	.byte	1                               # DW_CHILDREN_yes
+	.byte	17                              # DW_AT_low_pc
+	.byte	1                               # DW_FORM_addr
+	.byte	18                              # DW_AT_high_pc
+	.byte	6                               # DW_FORM_data4
+	.byte	64                              # DW_AT_frame_base
+	.byte	24                              # DW_FORM_exprloc
+	.byte	110                             # DW_AT_linkage_name
+	.byte	14                              # DW_FORM_strp
+	.byte	3                               # DW_AT_name
+	.byte	14                              # DW_FORM_strp
+	.byte	58                              # DW_AT_decl_file
+	.byte	11                              # DW_FORM_data1
+	.byte	59                              # DW_AT_decl_line
+	.byte	11                              # DW_FORM_data1
+	.byte	73                              # DW_AT_type
+	.byte	19                              # DW_FORM_ref4
+	.byte	63                              # DW_AT_external
+	.byte	25                              # DW_FORM_flag_present
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	3                               # Abbreviation Code
+	.byte	5                               # DW_TAG_formal_parameter
+	.byte	0                               # DW_CHILDREN_no
+	.byte	2                               # DW_AT_location
+	.byte	24                              # DW_FORM_exprloc
+	.byte	3                               # DW_AT_name
+	.byte	14                              # DW_FORM_strp
+	.byte	58                              # DW_AT_decl_file
+	.byte	11                              # DW_FORM_data1
+	.byte	59                              # DW_AT_decl_line
+	.byte	11                              # DW_FORM_data1
+	.byte	73                              # DW_AT_type
+	.byte	19                              # DW_FORM_ref4
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	4                               # Abbreviation Code
+	.byte	46                              # DW_TAG_subprogram
+	.byte	1                               # DW_CHILDREN_yes
+	.byte	85                              # DW_AT_ranges
+	.byte	23                              # DW_FORM_sec_offset
+	.byte	64                              # DW_AT_frame_base
+	.byte	24                              # DW_FORM_exprloc
+	.byte	3                               # DW_AT_name
+	.byte	14                              # DW_FORM_strp
+	.byte	58                              # DW_AT_decl_file
+	.byte	11                              # DW_FORM_data1
+	.byte	59                              # DW_AT_decl_line
+	.byte	11                              # DW_FORM_data1
+	.byte	73                              # DW_AT_type
+	.byte	19                              # DW_FORM_ref4
+	.byte	63                              # DW_AT_external
+	.byte	25                              # DW_FORM_flag_present
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	5                               # Abbreviation Code
+	.byte	36                              # DW_TAG_base_type
+	.byte	0                               # DW_CHILDREN_no
+	.byte	3                               # DW_AT_name
+	.byte	14                              # DW_FORM_strp
+	.byte	62                              # DW_AT_encoding
+	.byte	11                              # DW_FORM_data1
+	.byte	11                              # DW_AT_byte_size
+	.byte	11                              # DW_FORM_data1
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	6                               # Abbreviation Code
+	.byte	15                              # DW_TAG_pointer_type
+	.byte	0                               # DW_CHILDREN_no
+	.byte	73                              # DW_AT_type
+	.byte	19                              # DW_FORM_ref4
+	.byte	0                               # EOM(1)
+	.byte	0                               # EOM(2)
+	.byte	0                               # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+	.short	4                               # DWARF version number
+	.long	.debug_abbrev                   # Offset Into Abbrev. Section
+	.byte	8                               # Address Size (in bytes)
+	.byte	1                               # Abbrev [1] 0xb:0xea DW_TAG_compile_unit
+	.long	.Linfo_string0                  # DW_AT_producer
+	.short	33                              # DW_AT_language
+	.long	.Linfo_string1                  # DW_AT_name
+	.long	.Lline_table_start0             # DW_AT_stmt_list
+	.long	.Linfo_string2                  # DW_AT_comp_dir
+	.quad	0                               # DW_AT_low_pc
+	.long	.Ldebug_ranges1                 # DW_AT_ranges
+	.byte	2                               # Abbrev [2] 0x2a:0x2c DW_TAG_subprogram
+	.quad	.Lfunc_begin0                   # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
+	.byte	1                               # DW_AT_frame_base
+	.byte	86
+	.long	.Linfo_string3                  # DW_AT_linkage_name
+	.long	.Linfo_string4                  # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	1                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+                                        # DW_AT_external
+	.byte	3                               # Abbrev [3] 0x47:0xe DW_TAG_formal_parameter
+	.byte	2                               # DW_AT_location
+	.byte	145
+	.byte	124
+	.long	.Linfo_string11                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	1                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+	.byte	0                               # End Of Children Mark
+	.byte	2                               # Abbrev [2] 0x56:0x2c DW_TAG_subprogram
+	.quad	.Lfunc_begin1                   # DW_AT_low_pc
+	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
+	.byte	1                               # DW_AT_frame_base
+	.byte	86
+	.long	.Linfo_string6                  # DW_AT_linkage_name
+	.long	.Linfo_string7                  # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	5                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+                                        # DW_AT_external
+	.byte	3                               # Abbrev [3] 0x73:0xe DW_TAG_formal_parameter
+	.byte	2                               # DW_AT_location
+	.byte	145
+	.byte	124
+	.long	.Linfo_string11                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	5                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+	.byte	0                               # End Of Children Mark
+	.byte	2                               # Abbrev [2] 0x82:0x2c DW_TAG_subprogram
+	.quad	.Lfunc_begin2                   # DW_AT_low_pc
+	.long	.Lfunc_end2-.Lfunc_begin2       # DW_AT_high_pc
+	.byte	1                               # DW_AT_frame_base
+	.byte	86
+	.long	.Linfo_string8                  # DW_AT_linkage_name
+	.long	.Linfo_string9                  # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	9                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+                                        # DW_AT_external
+	.byte	3                               # Abbrev [3] 0x9f:0xe DW_TAG_formal_parameter
+	.byte	2                               # DW_AT_location
+	.byte	145
+	.byte	124
+	.long	.Linfo_string11                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	9                               # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+	.byte	0                               # End Of Children Mark
+	.byte	4                               # Abbrev [4] 0xae:0x2e DW_TAG_subprogram
+	.long	.Ldebug_ranges0                 # DW_AT_ranges
+	.byte	1                               # DW_AT_frame_base
+	.byte	86
+	.long	.Linfo_string10                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	13                              # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+                                        # DW_AT_external
+	.byte	3                               # Abbrev [3] 0xbf:0xe DW_TAG_formal_parameter
+	.byte	2                               # DW_AT_location
+	.byte	145
+	.byte	120
+	.long	.Linfo_string12                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	13                              # DW_AT_decl_line
+	.long	220                             # DW_AT_type
+	.byte	3                               # Abbrev [3] 0xcd:0xe DW_TAG_formal_parameter
+	.byte	2                               # DW_AT_location
+	.byte	145
+	.byte	112
+	.long	.Linfo_string13                 # DW_AT_name
+	.byte	1                               # DW_AT_decl_file
+	.byte	13                              # DW_AT_decl_line
+	.long	227                             # DW_AT_type
+	.byte	0                               # End Of Children Mark
+	.byte	5                               # Abbrev [5] 0xdc:0x7 DW_TAG_base_type
+	.long	.Linfo_string5                  # DW_AT_name
+	.byte	5                               # DW_AT_encoding
+	.byte	4                               # DW_AT_byte_size
+	.byte	6                               # Abbrev [6] 0xe3:0x5 DW_TAG_pointer_type
+	.long	232                             # DW_AT_type
+	.byte	6                               # Abbrev [6] 0xe8:0x5 DW_TAG_pointer_type
+	.long	237                             # DW_AT_type
+	.byte	5                               # Abbrev [5] 0xed:0x7 DW_TAG_base_type
+	.long	.Linfo_string14                 # DW_AT_name
+	.byte	6                               # DW_AT_encoding
+	.byte	1                               # DW_AT_byte_size
+	.byte	0                               # End Of Children Mark
+.Ldebug_info_end0:
+	.section	.debug_ranges,"", at progbits
+.Ldebug_ranges0:
+	.quad	main.__part.1
+	.quad	.LBB_END3_1
+	.quad	main.__part.2
+	.quad	.LBB_END3_2
+	.quad	main.__part.3
+	.quad	.LBB_END3_3
+	.quad	main.__part.4
+	.quad	.LBB_END3_4
+	.quad	main.__part.5
+	.quad	.LBB_END3_5
+	.quad	main.__part.6
+	.quad	.LBB_END3_6
+	.quad	main.__part.7
+	.quad	.LBB_END3_7
+	.quad	main.__part.8
+	.quad	.LBB_END3_8
+	.quad	main.__part.9
+	.quad	.LBB_END3_9
+	.quad	.Lfunc_begin3
+	.quad	.Lfunc_end3
+	.quad	0
+	.quad	0
+.Ldebug_ranges1:
+	.quad	.Lfunc_begin0
+	.quad	.Lfunc_end0
+	.quad	.Lfunc_begin1
+	.quad	.Lfunc_end1
+	.quad	.Lfunc_begin2
+	.quad	.Lfunc_end2
+	.quad	main.__part.1
+	.quad	.LBB_END3_1
+	.quad	main.__part.2
+	.quad	.LBB_END3_2
+	.quad	main.__part.3
+	.quad	.LBB_END3_3
+	.quad	main.__part.4
+	.quad	.LBB_END3_4
+	.quad	main.__part.5
+	.quad	.LBB_END3_5
+	.quad	main.__part.6
+	.quad	.LBB_END3_6
+	.quad	main.__part.7
+	.quad	.LBB_END3_7
+	.quad	main.__part.8
+	.quad	.LBB_END3_8
+	.quad	main.__part.9
+	.quad	.LBB_END3_9
+	.quad	.Lfunc_begin3
+	.quad	.Lfunc_end3
+	.quad	0
+	.quad	0
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string0:
+	.asciz	"clang version 12.0.0 (git at github.com:llvm/llvm-project.git bfa6ca07a8cda0ab889b7fee0b914907ce594e11)" # string offset=0
+.Linfo_string1:
+	.asciz	"llvm-symbolizer-bbsections-test.c" # string offset=101
+.Linfo_string2:
+	.asciz	"Examples" # string offset=135
+.Linfo_string3:
+	.asciz	"_Z1fi"                         # string offset=182
+.Linfo_string4:
+	.asciz	"f"                             # string offset=188
+.Linfo_string5:
+	.asciz	"int"                           # string offset=190
+.Linfo_string6:
+	.asciz	"_Z1gi"                         # string offset=194
+.Linfo_string7:
+	.asciz	"g"                             # string offset=200
+.Linfo_string8:
+	.asciz	"_Z1hi"                         # string offset=202
+.Linfo_string9:
+	.asciz	"h"                             # string offset=208
+.Linfo_string10:
+	.asciz	"main"                          # string offset=210
+.Linfo_string11:
+	.asciz	"a"                             # string offset=215
+.Linfo_string12:
+	.asciz	"argc"                          # string offset=217
+.Linfo_string13:
+	.asciz	"argv"                          # string offset=222
+.Linfo_string14:
+	.asciz	"char"                          # string offset=227
+	.ident	"clang version 12.0.0 (git at github.com:llvm/llvm-project.git bfa6ca07a8cda0ab889b7fee0b914907ce594e11)"
+	.section	".note.GNU-stack","", at progbits
+	.addrsig
+	.addrsig_sym _Z1fi
+	.addrsig_sym _Z1gi
+	.addrsig_sym _Z1hi
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:


        


More information about the llvm-branch-commits mailing list