130 lines · plain
1# RUN: llvm-mc -triple=x86_64-pc-win32 -filetype=obj < %s | llvm-readobj --codeview - | FileCheck %s2 3# This tries to test defrange gap edge cases.4 5# CHECK: LocalSym {6# CHECK: Type: int (0x74)7# CHECK: VarName: p8# CHECK: }9# CHECK-NOT: LocalSym {10# CHECK: DefRangeRegisterSym {11# CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141)12# CHECK-NEXT: Register: ESI (0x17)13# CHECK-NEXT: MayHaveNoName: 014# CHECK-NEXT: LocalVariableAddrRange {15# CHECK-NEXT: OffsetStart: .text+0x516# CHECK-NEXT: ISectStart: 0x017# CHECK-NEXT: Range: 0x518# CHECK-NEXT: }19# CHECK-NEXT: LocalVariableAddrGap [20# CHECK-NEXT: GapStartOffset: 0x321# CHECK-NEXT: Range: 0x122# CHECK-NEXT: ]23# CHECK-NEXT: }24# CHECK-NEXT: DefRangeRegisterSym {25# CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141)26# CHECK-NEXT: Register: ESI (0x17)27# CHECK-NEXT: MayHaveNoName: 028# CHECK-NEXT: LocalVariableAddrRange {29# CHECK-NEXT: OffsetStart: .text+0x1001530# CHECK-NEXT: ISectStart: 0x031# CHECK-NEXT: Range: 0x632# CHECK-NEXT: }33# CHECK-NEXT: }34# CHECK-NEXT: DefRangeRegisterSym {35# CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141)36# CHECK-NEXT: Register: ESI (0x17)37# CHECK-NEXT: MayHaveNoName: 038# CHECK-NEXT: LocalVariableAddrRange {39# CHECK-NEXT: OffsetStart: .text+0x2001B40# CHECK-NEXT: ISectStart: 0x041# CHECK-NEXT: Range: 0x142# CHECK-NEXT: }43# CHECK-NEXT: }44# CHECK-NEXT: DefRangeRegisterSym {45# CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141)46# CHECK-NEXT: Register: ESI (0x17)47# CHECK-NEXT: MayHaveNoName: 048# CHECK-NEXT: LocalVariableAddrRange {49# CHECK-NEXT: OffsetStart: .text+0x2001C50# CHECK-NEXT: ISectStart: 0x051# CHECK-NEXT: Range: 0xF00052# CHECK-NEXT: }53# CHECK-NEXT: LocalVariableAddrGap [54# CHECK-NEXT: GapStartOffset: 0x155# CHECK-NEXT: Range: 0xEFFE56# CHECK-NEXT: ]57# CHECK-NEXT: }58 59 .text60f: # @f61 mov $42, %esi62.Lbegin0:63 nop64 jmp .Lbegin165.Lend0:66 nop67.Lbegin1:68 nop69.Lend1:70 .p2align 471 .fill 0x10000, 1, 0x9072 73 mov $42, %esi74.Lbegin2:75 nop76 jmp .Lbegin377.Lend2:78 .fill 0x10000, 1, 0x9079.Lbegin3:80 nop81.Lend3:82 83 # Create a range that is exactly 0xF000 bytes long with a gap in the84 # middle.85.Lbegin4:86 nop87.Lend4:88 .fill 0xeffe, 1, 0x9089.Lbegin5:90 nop91.Lend5:92 ret93.Lfunc_end0:94 95 .section .debug$S,"dr"96 .p2align 297 .long 4 # Debug section magic98 .long 241 # Symbol subsection for f99 .long .Ltmp15-.Ltmp14 # Subsection size100.Ltmp14:101 .short .Ltmp17-.Ltmp16 # Record length102.Ltmp16:103 .short 4423 # Record kind: S_GPROC32_ID104 .long 0 # PtrParent105 .long 0 # PtrEnd106 .long 0 # PtrNext107 .long .Lfunc_end0-f # Code size108 .long 0 # Offset after prologue109 .long 0 # Offset before epilogue110 .long 4098 # Function type index111 .secrel32 f # Function section relative address112 .secidx f # Function section index113 .byte 0 # Flags114 .asciz "f" # Function name115.Ltmp17:116 .short .Ltmp19-.Ltmp18 # Record length117.Ltmp18:118 .short 4414 # Record kind: S_LOCAL119 .long 116 # TypeIndex120 .short 0 # Flags121 .asciz "p"122.Ltmp19:123 .cv_def_range .Lbegin0 .Lend0 .Lbegin1 .Lend1 .Lbegin2 .Lend2 .Lbegin3 .Lend3, reg, 23124 .cv_def_range .Lbegin4 .Lend4 .Lbegin5 .Lend5, reg, 23125 .short 2 # Record length126 .short 4431 # Record kind: S_PROC_ID_END127.Ltmp15:128 .cv_filechecksums # File index to string table offset subsection129 .cv_stringtable # String table130