214 lines · plain
1// clang-format off2// REQUIRES: lld, x863 4// Test block range is set.5// RUN: llvm-mc -triple=x86_64-windows-msvc --filetype=obj %s > %t.obj6// RUN: lld-link /debug:full /nodefaultlib /entry:main %t.obj /out:%t.exe /base:0x1400000007// RUN: %lldb %t.exe -o "image lookup -a 0x140001014 -v" -o "exit" | FileCheck %s8 9// CHECK: Function: id = {{.*}}, name = "main", range = [0x0000000140001000-0x0000000140001044)10// CHECK-NEXT: FuncType: id = {{.*}}, byte-size = 0, compiler_type = "int (void)"11// CHECK-NEXT: Blocks: id = {{.*}}, range = [0x140001000-0x140001044)12// CHECK-NEXT: id = {{.*}}, range = [0x140001014-0x14000103b)13 14 15 .text16 .def @feat.00;17 .scl 3;18 .type 0;19 .endef20 .globl @feat.0021.set @feat.00, 022 .intel_syntax noprefix23 .file "blocks.cpp"24 .def main;25 .scl 2;26 .type 32;27 .endef28 .globl main # -- Begin function main29 .p2align 4, 0x9030main: # @main31.Lfunc_begin0:32 .cv_func_id 033 .cv_file 1 "/tmp/blocks.cpp" "4CC0785E17ACF09C657F740775661395" 134 .cv_loc 0 1 1 0 # blocks.cpp:1:035.seh_proc main36# %bb.0: # %entry37 sub rsp, 1638 .seh_stackalloc 1639 .seh_endprologue40 mov dword ptr [rsp + 12], 041.Ltmp0:42 .cv_loc 0 1 2 0 # blocks.cpp:2:043 mov dword ptr [rsp + 8], 044.Ltmp1:45 .cv_loc 0 1 3 0 # blocks.cpp:3:046 mov dword ptr [rsp + 4], 047.LBB0_1: # %for.cond48 # =>This Inner Loop Header: Depth=149 cmp dword ptr [rsp + 4], 350 jge .LBB0_451# %bb.2: # %for.body52 # in Loop: Header=BB0_1 Depth=153.Ltmp2:54 .cv_loc 0 1 4 0 # blocks.cpp:4:055 mov eax, dword ptr [rsp + 8]56 add eax, 157 mov dword ptr [rsp + 8], eax58.Ltmp3:59# %bb.3: # %for.inc60 # in Loop: Header=BB0_1 Depth=161 .cv_loc 0 1 3 0 # blocks.cpp:3:062 mov eax, dword ptr [rsp + 4]63 add eax, 164 mov dword ptr [rsp + 4], eax65 jmp .LBB0_166.Ltmp4:67.LBB0_4: # %for.end68 .cv_loc 0 1 6 0 # blocks.cpp:6:069 mov eax, dword ptr [rsp + 8]70 add rsp, 1671 ret72.Ltmp5:73.Lfunc_end0:74 .seh_endproc75 # -- End function76 .section .drectve,"yn"77 .ascii " /DEFAULTLIB:libcmt.lib"78 .ascii " /DEFAULTLIB:oldnames.lib"79 .section .debug$S,"dr"80 .p2align 2, 0x081 .long 4 # Debug section magic82 .long 24183 .long .Ltmp7-.Ltmp6 # Subsection size84.Ltmp6:85 .short .Ltmp9-.Ltmp8 # Record length86.Ltmp8:87 .short 4353 # Record kind: S_OBJNAME88 .long 0 # Signature89 .asciz "/tmp/blocks.obj" # Object name90 .p2align 2, 0x091.Ltmp9:92 .short .Ltmp11-.Ltmp10 # Record length93.Ltmp10:94 .short 4412 # Record kind: S_COMPILE395 .long 1 # Flags and language96 .short 208 # CPUType97 .short 16 # Frontend version98 .short 099 .short 0100 .short 0101 .short 16000 # Backend version102 .short 0103 .short 0104 .short 0105 .asciz "clang version 16.0.0" # Null-terminated compiler version string106 .p2align 2, 0x0107.Ltmp11:108.Ltmp7:109 .p2align 2, 0x0110 .long 241 # Symbol subsection for main111 .long .Ltmp13-.Ltmp12 # Subsection size112.Ltmp12:113 .short .Ltmp15-.Ltmp14 # Record length114.Ltmp14:115 .short 4423 # Record kind: S_GPROC32_ID116 .long 0 # PtrParent117 .long 0 # PtrEnd118 .long 0 # PtrNext119 .long .Lfunc_end0-main # Code size120 .long 0 # Offset after prologue121 .long 0 # Offset before epilogue122 .long 4098 # Function type index123 .secrel32 main # Function section relative address124 .secidx main # Function section index125 .byte 0 # Flags126 .asciz "main" # Function name127 .p2align 2, 0x0128.Ltmp15:129 .short .Ltmp17-.Ltmp16 # Record length130.Ltmp16:131 .short 4114 # Record kind: S_FRAMEPROC132 .long 16 # FrameSize133 .long 0 # Padding134 .long 0 # Offset of padding135 .long 0 # Bytes of callee saved registers136 .long 0 # Exception handler offset137 .short 0 # Exception handler section138 .long 81920 # Flags (defines frame register)139 .p2align 2, 0x0140.Ltmp17:141 .short .Ltmp19-.Ltmp18 # Record length142.Ltmp18:143 .short 4414 # Record kind: S_LOCAL144 .long 116 # TypeIndex145 .short 0 # Flags146 .asciz "count"147 .p2align 2, 0x0148.Ltmp19:149 .cv_def_range .Ltmp0 .Ltmp5, frame_ptr_rel, 8150 .short .Ltmp21-.Ltmp20 # Record length151.Ltmp20:152 .short 4355 # Record kind: S_BLOCK32153 .long 0 # PtrParent154 .long 0 # PtrEnd155 .long .Ltmp4-.Ltmp1 # Code size156 .secrel32 .Ltmp1 # Function section relative address157 .secidx .Lfunc_begin0 # Function section index158 .byte 0 # Lexical block name159 .p2align 2, 0x0160.Ltmp21:161 .short .Ltmp23-.Ltmp22 # Record length162.Ltmp22:163 .short 4414 # Record kind: S_LOCAL164 .long 116 # TypeIndex165 .short 0 # Flags166 .asciz "i"167 .p2align 2, 0x0168.Ltmp23:169 .cv_def_range .Ltmp1 .Ltmp4, frame_ptr_rel, 4170 .short 2 # Record length171 .short 6 # Record kind: S_END172 .short 2 # Record length173 .short 4431 # Record kind: S_PROC_ID_END174.Ltmp13:175 .p2align 2, 0x0176 .cv_linetable 0, main, .Lfunc_end0177 .cv_filechecksums # File index to string table offset subsection178 .cv_stringtable # String table179 .long 241180 .long .Ltmp25-.Ltmp24 # Subsection size181.Ltmp24:182 .short .Ltmp27-.Ltmp26 # Record length183.Ltmp26:184 .short 4428 # Record kind: S_BUILDINFO185 .long 4104 # LF_BUILDINFO index186 .p2align 2, 0x0187.Ltmp27:188.Ltmp25:189 .p2align 2, 0x0190 .section .debug$T,"dr"191 .p2align 2, 0x0192 .long 4 # Debug section magic193 # ArgList (0x1000)194 .short 0x6 # Record length195 .short 0x1201 # Record kind: LF_ARGLIST196 .long 0x0 # NumArgs197 # Procedure (0x1001)198 .short 0xe # Record length199 .short 0x1008 # Record kind: LF_PROCEDURE200 .long 0x74 # ReturnType: int201 .byte 0x0 # CallingConvention: NearC202 .byte 0x0 # FunctionOptions203 .short 0x0 # NumParameters204 .long 0x1000 # ArgListType: ()205 # FuncId (0x1002)206 .short 0x12 # Record length207 .short 0x1601 # Record kind: LF_FUNC_ID208 .long 0x0 # ParentScope209 .long 0x1001 # FunctionType: int ()210 .asciz "main" # Name211 .byte 243212 .byte 242213 .byte 241214