| // clang-format off | |
| // REQUIRES: lld, x86 | |
| // Test block range is set. | |
| // RUN: llvm-mc -triple=x86_64-windows-msvc --filetype=obj %s > %t.obj | |
| // RUN: lld-link /debug:full /nodefaultlib /entry:main %t.obj /out:%t.exe /base:0x140000000 | |
| // RUN: %lldb %t.exe -o "image lookup -a 0x140001014 -v" -o "exit" | FileCheck %s | |
| // CHECK: Function: id = {{.*}}, name = "main", range = [0x0000000140001000-0x0000000140001044) | |
| // CHECK-NEXT: FuncType: id = {{.*}}, byte-size = 0, compiler_type = "int (void)" | |
| // CHECK-NEXT: Blocks: id = {{.*}}, range = [0x140001000-0x140001044) | |
| // CHECK-NEXT: id = {{.*}}, range = [0x140001014-0x14000103b) | |
| .text | |
| .def @feat.00; | |
| .scl 3; | |
| .type 0; | |
| .endef | |
| .globl @feat.00 | |
| .set @feat.00, 0 | |
| .intel_syntax noprefix | |
| .file "blocks.cpp" | |
| .def main; | |
| .scl 2; | |
| .type 32; | |
| .endef | |
| .globl main # -- Begin function main | |
| .p2align 4, 0x90 | |
| main: # @main | |
| .Lfunc_begin0: | |
| .cv_func_id 0 | |
| .cv_file 1 "/tmp/blocks.cpp" "4CC0785E17ACF09C657F740775661395" 1 | |
| .cv_loc 0 1 1 0 # blocks.cpp:1:0 | |
| .seh_proc main | |
| # %bb.0: # %entry | |
| sub rsp, 16 | |
| .seh_stackalloc 16 | |
| .seh_endprologue | |
| mov dword ptr [rsp + 12], 0 | |
| .Ltmp0: | |
| .cv_loc 0 1 2 0 # blocks.cpp:2:0 | |
| mov dword ptr [rsp + 8], 0 | |
| .Ltmp1: | |
| .cv_loc 0 1 3 0 # blocks.cpp:3:0 | |
| mov dword ptr [rsp + 4], 0 | |
| .LBB0_1: # %for.cond | |
| # =>This Inner Loop Header: Depth=1 | |
| cmp dword ptr [rsp + 4], 3 | |
| jge .LBB0_4 | |
| # %bb.2: # %for.body | |
| # in Loop: Header=BB0_1 Depth=1 | |
| .Ltmp2: | |
| .cv_loc 0 1 4 0 # blocks.cpp:4:0 | |
| mov eax, dword ptr [rsp + 8] | |
| add eax, 1 | |
| mov dword ptr [rsp + 8], eax | |
| .Ltmp3: | |
| # %bb.3: # %for.inc | |
| # in Loop: Header=BB0_1 Depth=1 | |
| .cv_loc 0 1 3 0 # blocks.cpp:3:0 | |
| mov eax, dword ptr [rsp + 4] | |
| add eax, 1 | |
| mov dword ptr [rsp + 4], eax | |
| jmp .LBB0_1 | |
| .Ltmp4: | |
| .LBB0_4: # %for.end | |
| .cv_loc 0 1 6 0 # blocks.cpp:6:0 | |
| mov eax, dword ptr [rsp + 8] | |
| add rsp, 16 | |
| ret | |
| .Ltmp5: | |
| .Lfunc_end0: | |
| .seh_endproc | |
| # -- End function | |
| .section .drectve,"yn" | |
| .ascii " /DEFAULTLIB:libcmt.lib" | |
| .ascii " /DEFAULTLIB:oldnames.lib" | |
| .section .debug$S,"dr" | |
| .p2align 2, 0x0 | |
| .long 4 # Debug section magic | |
| .long 241 | |
| .long .Ltmp7-.Ltmp6 # Subsection size | |
| .Ltmp6: | |
| .short .Ltmp9-.Ltmp8 # Record length | |
| .Ltmp8: | |
| .short 4353 # Record kind: S_OBJNAME | |
| .long 0 # Signature | |
| .asciz "/tmp/blocks.obj" # Object name | |
| .p2align 2, 0x0 | |
| .Ltmp9: | |
| .short .Ltmp11-.Ltmp10 # Record length | |
| .Ltmp10: | |
| .short 4412 # Record kind: S_COMPILE3 | |
| .long 1 # Flags and language | |
| .short 208 # CPUType | |
| .short 16 # Frontend version | |
| .short 0 | |
| .short 0 | |
| .short 0 | |
| .short 16000 # Backend version | |
| .short 0 | |
| .short 0 | |
| .short 0 | |
| .asciz "clang version 16.0.0" # Null-terminated compiler version string | |
| .p2align 2, 0x0 | |
| .Ltmp11: | |
| .Ltmp7: | |
| .p2align 2, 0x0 | |
| .long 241 # Symbol subsection for main | |
| .long .Ltmp13-.Ltmp12 # Subsection size | |
| .Ltmp12: | |
| .short .Ltmp15-.Ltmp14 # Record length | |
| .Ltmp14: | |
| .short 4423 # Record kind: S_GPROC32_ID | |
| .long 0 # PtrParent | |
| .long 0 # PtrEnd | |
| .long 0 # PtrNext | |
| .long .Lfunc_end0-main # Code size | |
| .long 0 # Offset after prologue | |
| .long 0 # Offset before epilogue | |
| .long 4098 # Function type index | |
| .secrel32 main # Function section relative address | |
| .secidx main # Function section index | |
| .byte 0 # Flags | |
| .asciz "main" # Function name | |
| .p2align 2, 0x0 | |
| .Ltmp15: | |
| .short .Ltmp17-.Ltmp16 # Record length | |
| .Ltmp16: | |
| .short 4114 # Record kind: S_FRAMEPROC | |
| .long 16 # FrameSize | |
| .long 0 # Padding | |
| .long 0 # Offset of padding | |
| .long 0 # Bytes of callee saved registers | |
| .long 0 # Exception handler offset | |
| .short 0 # Exception handler section | |
| .long 81920 # Flags (defines frame register) | |
| .p2align 2, 0x0 | |
| .Ltmp17: | |
| .short .Ltmp19-.Ltmp18 # Record length | |
| .Ltmp18: | |
| .short 4414 # Record kind: S_LOCAL | |
| .long 116 # TypeIndex | |
| .short 0 # Flags | |
| .asciz "count" | |
| .p2align 2, 0x0 | |
| .Ltmp19: | |
| .cv_def_range .Ltmp0 .Ltmp5, frame_ptr_rel, 8 | |
| .short .Ltmp21-.Ltmp20 # Record length | |
| .Ltmp20: | |
| .short 4355 # Record kind: S_BLOCK32 | |
| .long 0 # PtrParent | |
| .long 0 # PtrEnd | |
| .long .Ltmp4-.Ltmp1 # Code size | |
| .secrel32 .Ltmp1 # Function section relative address | |
| .secidx .Lfunc_begin0 # Function section index | |
| .byte 0 # Lexical block name | |
| .p2align 2, 0x0 | |
| .Ltmp21: | |
| .short .Ltmp23-.Ltmp22 # Record length | |
| .Ltmp22: | |
| .short 4414 # Record kind: S_LOCAL | |
| .long 116 # TypeIndex | |
| .short 0 # Flags | |
| .asciz "i" | |
| .p2align 2, 0x0 | |
| .Ltmp23: | |
| .cv_def_range .Ltmp1 .Ltmp4, frame_ptr_rel, 4 | |
| .short 2 # Record length | |
| .short 6 # Record kind: S_END | |
| .short 2 # Record length | |
| .short 4431 # Record kind: S_PROC_ID_END | |
| .Ltmp13: | |
| .p2align 2, 0x0 | |
| .cv_linetable 0, main, .Lfunc_end0 | |
| .cv_filechecksums # File index to string table offset subsection | |
| .cv_stringtable # String table | |
| .long 241 | |
| .long .Ltmp25-.Ltmp24 # Subsection size | |
| .Ltmp24: | |
| .short .Ltmp27-.Ltmp26 # Record length | |
| .Ltmp26: | |
| .short 4428 # Record kind: S_BUILDINFO | |
| .long 4104 # LF_BUILDINFO index | |
| .p2align 2, 0x0 | |
| .Ltmp27: | |
| .Ltmp25: | |
| .p2align 2, 0x0 | |
| .section .debug$T,"dr" | |
| .p2align 2, 0x0 | |
| .long 4 # Debug section magic | |
| # ArgList (0x1000) | |
| .short 0x6 # Record length | |
| .short 0x1201 # Record kind: LF_ARGLIST | |
| .long 0x0 # NumArgs | |
| # Procedure (0x1001) | |
| .short 0xe # Record length | |
| .short 0x1008 # Record kind: LF_PROCEDURE | |
| .long 0x74 # ReturnType: int | |
| .byte 0x0 # CallingConvention: NearC | |
| .byte 0x0 # FunctionOptions | |
| .short 0x0 # NumParameters | |
| .long 0x1000 # ArgListType: () | |
| # FuncId (0x1002) | |
| .short 0x12 # Record length | |
| .short 0x1601 # Record kind: LF_FUNC_ID | |
| .long 0x0 # ParentScope | |
| .long 0x1001 # FunctionType: int () | |
| .asciz "main" # Name | |
| .byte 243 | |
| .byte 242 | |
| .byte 241 |