xref: /llvm-project/lldb/test/Shell/SymbolFile/NativePDB/blocks.s (revision cf3464bbb796d492bcd4e764ada945304e0c874f)
160379369SZequan Wu// clang-format off
260379369SZequan Wu// REQUIRES: lld, x86
360379369SZequan Wu
460379369SZequan Wu// Test block range is set.
560379369SZequan Wu// RUN: llvm-mc -triple=x86_64-windows-msvc --filetype=obj %s > %t.obj
660379369SZequan Wu// RUN: lld-link /debug:full /nodefaultlib /entry:main %t.obj /out:%t.exe /base:0x140000000
7*cf3464bbSJonas Devlieghere// RUN: %lldb %t.exe -o "image lookup -a 0x140001014 -v" -o "exit" | FileCheck %s
860379369SZequan Wu
960379369SZequan Wu// CHECK:      Function: id = {{.*}}, name = "main", range = [0x0000000140001000-0x0000000140001044)
1060379369SZequan Wu// CHECK-NEXT: FuncType: id = {{.*}}, byte-size = 0, compiler_type = "int (void)"
1160379369SZequan Wu// CHECK-NEXT:   Blocks: id = {{.*}}, range = [0x140001000-0x140001044)
1260379369SZequan Wu// CHECK-NEXT:           id = {{.*}}, range = [0x140001014-0x14000103b)
1360379369SZequan Wu
1460379369SZequan Wu
1560379369SZequan Wu	.text
1660379369SZequan Wu	.def	@feat.00;
1760379369SZequan Wu	.scl	3;
1860379369SZequan Wu	.type	0;
1960379369SZequan Wu	.endef
2060379369SZequan Wu	.globl	@feat.00
2160379369SZequan Wu.set @feat.00, 0
2260379369SZequan Wu	.intel_syntax noprefix
2360379369SZequan Wu	.file	"blocks.cpp"
2460379369SZequan Wu	.def	main;
2560379369SZequan Wu	.scl	2;
2660379369SZequan Wu	.type	32;
2760379369SZequan Wu	.endef
2860379369SZequan Wu	.globl	main                            # -- Begin function main
2960379369SZequan Wu	.p2align	4, 0x90
3060379369SZequan Wumain:                                   # @main
3160379369SZequan Wu.Lfunc_begin0:
3260379369SZequan Wu	.cv_func_id 0
3360379369SZequan Wu	.cv_file	1 "/tmp/blocks.cpp" "4CC0785E17ACF09C657F740775661395" 1
3460379369SZequan Wu	.cv_loc	0 1 1 0                         # blocks.cpp:1:0
3560379369SZequan Wu.seh_proc main
3660379369SZequan Wu# %bb.0:                                # %entry
3760379369SZequan Wu	sub	rsp, 16
3860379369SZequan Wu	.seh_stackalloc 16
3960379369SZequan Wu	.seh_endprologue
4060379369SZequan Wu	mov	dword ptr [rsp + 12], 0
4160379369SZequan Wu.Ltmp0:
4260379369SZequan Wu	.cv_loc	0 1 2 0                         # blocks.cpp:2:0
4360379369SZequan Wu	mov	dword ptr [rsp + 8], 0
4460379369SZequan Wu.Ltmp1:
4560379369SZequan Wu	.cv_loc	0 1 3 0                         # blocks.cpp:3:0
4660379369SZequan Wu	mov	dword ptr [rsp + 4], 0
4760379369SZequan Wu.LBB0_1:                                # %for.cond
4860379369SZequan Wu                                        # =>This Inner Loop Header: Depth=1
4960379369SZequan Wu	cmp	dword ptr [rsp + 4], 3
5060379369SZequan Wu	jge	.LBB0_4
5160379369SZequan Wu# %bb.2:                                # %for.body
5260379369SZequan Wu                                        #   in Loop: Header=BB0_1 Depth=1
5360379369SZequan Wu.Ltmp2:
5460379369SZequan Wu	.cv_loc	0 1 4 0                         # blocks.cpp:4:0
5560379369SZequan Wu	mov	eax, dword ptr [rsp + 8]
5660379369SZequan Wu	add	eax, 1
5760379369SZequan Wu	mov	dword ptr [rsp + 8], eax
5860379369SZequan Wu.Ltmp3:
5960379369SZequan Wu# %bb.3:                                # %for.inc
6060379369SZequan Wu                                        #   in Loop: Header=BB0_1 Depth=1
6160379369SZequan Wu	.cv_loc	0 1 3 0                         # blocks.cpp:3:0
6260379369SZequan Wu	mov	eax, dword ptr [rsp + 4]
6360379369SZequan Wu	add	eax, 1
6460379369SZequan Wu	mov	dword ptr [rsp + 4], eax
6560379369SZequan Wu	jmp	.LBB0_1
6660379369SZequan Wu.Ltmp4:
6760379369SZequan Wu.LBB0_4:                                # %for.end
6860379369SZequan Wu	.cv_loc	0 1 6 0                         # blocks.cpp:6:0
6960379369SZequan Wu	mov	eax, dword ptr [rsp + 8]
7060379369SZequan Wu	add	rsp, 16
7160379369SZequan Wu	ret
7260379369SZequan Wu.Ltmp5:
7360379369SZequan Wu.Lfunc_end0:
7460379369SZequan Wu	.seh_endproc
7560379369SZequan Wu                                        # -- End function
7660379369SZequan Wu	.section	.drectve,"yn"
7760379369SZequan Wu	.ascii	" /DEFAULTLIB:libcmt.lib"
7860379369SZequan Wu	.ascii	" /DEFAULTLIB:oldnames.lib"
7960379369SZequan Wu	.section	.debug$S,"dr"
8060379369SZequan Wu	.p2align	2, 0x0
8160379369SZequan Wu	.long	4                               # Debug section magic
8260379369SZequan Wu	.long	241
8360379369SZequan Wu	.long	.Ltmp7-.Ltmp6                   # Subsection size
8460379369SZequan Wu.Ltmp6:
8560379369SZequan Wu	.short	.Ltmp9-.Ltmp8                   # Record length
8660379369SZequan Wu.Ltmp8:
8760379369SZequan Wu	.short	4353                            # Record kind: S_OBJNAME
8860379369SZequan Wu	.long	0                               # Signature
8960379369SZequan Wu	.asciz	"/tmp/blocks.obj"               # Object name
9060379369SZequan Wu	.p2align	2, 0x0
9160379369SZequan Wu.Ltmp9:
9260379369SZequan Wu	.short	.Ltmp11-.Ltmp10                 # Record length
9360379369SZequan Wu.Ltmp10:
9460379369SZequan Wu	.short	4412                            # Record kind: S_COMPILE3
9560379369SZequan Wu	.long	1                               # Flags and language
9660379369SZequan Wu	.short	208                             # CPUType
9760379369SZequan Wu	.short	16                              # Frontend version
9860379369SZequan Wu	.short	0
9960379369SZequan Wu	.short	0
10060379369SZequan Wu	.short	0
10160379369SZequan Wu	.short	16000                           # Backend version
10260379369SZequan Wu	.short	0
10360379369SZequan Wu	.short	0
10460379369SZequan Wu	.short	0
10560379369SZequan Wu	.asciz	"clang version 16.0.0"          # Null-terminated compiler version string
10660379369SZequan Wu	.p2align	2, 0x0
10760379369SZequan Wu.Ltmp11:
10860379369SZequan Wu.Ltmp7:
10960379369SZequan Wu	.p2align	2, 0x0
11060379369SZequan Wu	.long	241                             # Symbol subsection for main
11160379369SZequan Wu	.long	.Ltmp13-.Ltmp12                 # Subsection size
11260379369SZequan Wu.Ltmp12:
11360379369SZequan Wu	.short	.Ltmp15-.Ltmp14                 # Record length
11460379369SZequan Wu.Ltmp14:
11560379369SZequan Wu	.short	4423                            # Record kind: S_GPROC32_ID
11660379369SZequan Wu	.long	0                               # PtrParent
11760379369SZequan Wu	.long	0                               # PtrEnd
11860379369SZequan Wu	.long	0                               # PtrNext
11960379369SZequan Wu	.long	.Lfunc_end0-main                # Code size
12060379369SZequan Wu	.long	0                               # Offset after prologue
12160379369SZequan Wu	.long	0                               # Offset before epilogue
12260379369SZequan Wu	.long	4098                            # Function type index
12360379369SZequan Wu	.secrel32	main                    # Function section relative address
12460379369SZequan Wu	.secidx	main                            # Function section index
12560379369SZequan Wu	.byte	0                               # Flags
12660379369SZequan Wu	.asciz	"main"                          # Function name
12760379369SZequan Wu	.p2align	2, 0x0
12860379369SZequan Wu.Ltmp15:
12960379369SZequan Wu	.short	.Ltmp17-.Ltmp16                 # Record length
13060379369SZequan Wu.Ltmp16:
13160379369SZequan Wu	.short	4114                            # Record kind: S_FRAMEPROC
13260379369SZequan Wu	.long	16                              # FrameSize
13360379369SZequan Wu	.long	0                               # Padding
13460379369SZequan Wu	.long	0                               # Offset of padding
13560379369SZequan Wu	.long	0                               # Bytes of callee saved registers
13660379369SZequan Wu	.long	0                               # Exception handler offset
13760379369SZequan Wu	.short	0                               # Exception handler section
13860379369SZequan Wu	.long	81920                           # Flags (defines frame register)
13960379369SZequan Wu	.p2align	2, 0x0
14060379369SZequan Wu.Ltmp17:
14160379369SZequan Wu	.short	.Ltmp19-.Ltmp18                 # Record length
14260379369SZequan Wu.Ltmp18:
14360379369SZequan Wu	.short	4414                            # Record kind: S_LOCAL
14460379369SZequan Wu	.long	116                             # TypeIndex
14560379369SZequan Wu	.short	0                               # Flags
14660379369SZequan Wu	.asciz	"count"
14760379369SZequan Wu	.p2align	2, 0x0
14860379369SZequan Wu.Ltmp19:
14960379369SZequan Wu	.cv_def_range	 .Ltmp0 .Ltmp5, frame_ptr_rel, 8
15060379369SZequan Wu	.short	.Ltmp21-.Ltmp20                 # Record length
15160379369SZequan Wu.Ltmp20:
15260379369SZequan Wu	.short	4355                            # Record kind: S_BLOCK32
15360379369SZequan Wu	.long	0                               # PtrParent
15460379369SZequan Wu	.long	0                               # PtrEnd
15560379369SZequan Wu	.long	.Ltmp4-.Ltmp1                   # Code size
15660379369SZequan Wu	.secrel32	.Ltmp1                  # Function section relative address
15760379369SZequan Wu	.secidx	.Lfunc_begin0                   # Function section index
15860379369SZequan Wu	.byte	0                               # Lexical block name
15960379369SZequan Wu	.p2align	2, 0x0
16060379369SZequan Wu.Ltmp21:
16160379369SZequan Wu	.short	.Ltmp23-.Ltmp22                 # Record length
16260379369SZequan Wu.Ltmp22:
16360379369SZequan Wu	.short	4414                            # Record kind: S_LOCAL
16460379369SZequan Wu	.long	116                             # TypeIndex
16560379369SZequan Wu	.short	0                               # Flags
16660379369SZequan Wu	.asciz	"i"
16760379369SZequan Wu	.p2align	2, 0x0
16860379369SZequan Wu.Ltmp23:
16960379369SZequan Wu	.cv_def_range	 .Ltmp1 .Ltmp4, frame_ptr_rel, 4
17060379369SZequan Wu	.short	2                               # Record length
17160379369SZequan Wu	.short	6                               # Record kind: S_END
17260379369SZequan Wu	.short	2                               # Record length
17360379369SZequan Wu	.short	4431                            # Record kind: S_PROC_ID_END
17460379369SZequan Wu.Ltmp13:
17560379369SZequan Wu	.p2align	2, 0x0
17660379369SZequan Wu	.cv_linetable	0, main, .Lfunc_end0
17760379369SZequan Wu	.cv_filechecksums                       # File index to string table offset subsection
17860379369SZequan Wu	.cv_stringtable                         # String table
17960379369SZequan Wu	.long	241
18060379369SZequan Wu	.long	.Ltmp25-.Ltmp24                 # Subsection size
18160379369SZequan Wu.Ltmp24:
18260379369SZequan Wu	.short	.Ltmp27-.Ltmp26                 # Record length
18360379369SZequan Wu.Ltmp26:
18460379369SZequan Wu	.short	4428                            # Record kind: S_BUILDINFO
18560379369SZequan Wu	.long	4104                            # LF_BUILDINFO index
18660379369SZequan Wu	.p2align	2, 0x0
18760379369SZequan Wu.Ltmp27:
18860379369SZequan Wu.Ltmp25:
18960379369SZequan Wu	.p2align	2, 0x0
19060379369SZequan Wu	.section	.debug$T,"dr"
19160379369SZequan Wu	.p2align	2, 0x0
19260379369SZequan Wu	.long	4                               # Debug section magic
19360379369SZequan Wu	# ArgList (0x1000)
19460379369SZequan Wu	.short	0x6                             # Record length
19560379369SZequan Wu	.short	0x1201                          # Record kind: LF_ARGLIST
19660379369SZequan Wu	.long	0x0                             # NumArgs
19760379369SZequan Wu	# Procedure (0x1001)
19860379369SZequan Wu	.short	0xe                             # Record length
19960379369SZequan Wu	.short	0x1008                          # Record kind: LF_PROCEDURE
20060379369SZequan Wu	.long	0x74                            # ReturnType: int
20160379369SZequan Wu	.byte	0x0                             # CallingConvention: NearC
20260379369SZequan Wu	.byte	0x0                             # FunctionOptions
20360379369SZequan Wu	.short	0x0                             # NumParameters
20460379369SZequan Wu	.long	0x1000                          # ArgListType: ()
20560379369SZequan Wu	# FuncId (0x1002)
20660379369SZequan Wu	.short	0x12                            # Record length
20760379369SZequan Wu	.short	0x1601                          # Record kind: LF_FUNC_ID
20860379369SZequan Wu	.long	0x0                             # ParentScope
20960379369SZequan Wu	.long	0x1001                          # FunctionType: int ()
21060379369SZequan Wu	.asciz	"main"                          # Name
21160379369SZequan Wu	.byte	243
21260379369SZequan Wu	.byte	242
21360379369SZequan Wu	.byte	241
214