diff options
| author | Reid Kleckner <rnk@google.com> | 2016-02-02 17:41:18 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-02-02 17:41:18 +0000 |
| commit | 1fcd610c9499d8f1eb42f339926ed17ec6d98ddd (patch) | |
| tree | b80a02a7939d74d6657ce1523b272f81ea84b403 /llvm/test/DebugInfo/COFF/inlining.ll | |
| parent | 7d6b924df841faff6893207044cc57b02464b255 (diff) | |
| download | bcm5719-llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.tar.gz bcm5719-llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.zip | |
[codeview] Wire up the .cv_inline_linetable directive
This directive emits the binary annotations that describe line and code
deltas in inlined call sites. Single-stepping through inlined frames in
windbg now works.
llvm-svn: 259535
Diffstat (limited to 'llvm/test/DebugInfo/COFF/inlining.ll')
| -rw-r--r-- | llvm/test/DebugInfo/COFF/inlining.ll | 123 |
1 files changed, 89 insertions, 34 deletions
diff --git a/llvm/test/DebugInfo/COFF/inlining.ll b/llvm/test/DebugInfo/COFF/inlining.ll index 08e26c789a2..fafc224022e 100644 --- a/llvm/test/DebugInfo/COFF/inlining.ll +++ b/llvm/test/DebugInfo/COFF/inlining.ll @@ -39,40 +39,95 @@ ; ASM: addl $7, "?x@@3HC" ; ASM: .cv_loc 0 1 17 1 # t.cpp:17:1 -; OBJ: ProcStart { -; OBJ: PtrParent: 0x0 -; OBJ: PtrEnd: 0x0 -; OBJ: PtrNext: 0x0 -; OBJ: CodeSize: 0x3D -; OBJ: DbgStart: 0x0 -; OBJ: DbgEnd: 0x0 -; OBJ: FunctionType: 0x0 -; OBJ: CodeOffset: ?baz@@YAXXZ+0x0 -; OBJ: Segment: 0x0 -; OBJ: Flags [ (0x0) -; OBJ: ] -; OBJ: DisplayName: baz -; OBJ: LinkageName: ?baz@@YAXXZ -; OBJ: } -; OBJ: InlineSite { -; OBJ: PtrParent: 0x0 -; OBJ: PtrEnd: 0x0 -; OBJ: Inlinee: bar (0x1003) -; OBJ: BinaryAnnotations [ -; OBJ: ] -; OBJ: } -; OBJ: InlineSite { -; OBJ: PtrParent: 0x0 -; OBJ: PtrEnd: 0x0 -; OBJ: Inlinee: foo (0x1004) -; OBJ: BinaryAnnotations [ -; OBJ: ] -; OBJ: } -; OBJ: InlineSiteEnd { -; OBJ: } -; OBJ: InlineSiteEnd { -; OBJ: } -; OBJ: ProcEnd +; ASM: .section .debug$S,"dr" +; ASM: .long 246 # Inlinee lines subsection +; ASM: .long [[inline_end:.*]]-[[inline_beg:.*]] +; ASM: [[inline_beg]]: +; ASM: .long 0 +; ASM: .long 4099 # Inlined function bar starts at t.cpp:8 +; ASM: .long 0 +; ASM: .long 8 +; ASM: .long 4100 # Inlined function foo starts at t.cpp:2 +; ASM: .long 0 +; ASM: .long 2 +; ASM: [[inline_end]]: + +; ASM: .long 241 # Symbol subsection for baz +; ASM: .long Ltmp3-Ltmp2 +; ASM: .short 4429 +; ASM: .asciz +; ASM: .cv_inline_linetable 1 1 8 Lfunc_begin0 contains 2 +; ASM: .short 4429 +; ASM: .asciz +; ASM: .cv_inline_linetable 2 1 2 Lfunc_begin0 +; ASM: .short 4430 +; ASM: .short 4430 + +; OBJ: Subsection [ +; OBJ: SubSectionType: InlineeLines (0xF6) +; OBJ: SubSectionSize: 0x1C +; OBJ: InlineeSourceLine { +; OBJ: Inlinee: bar (0x1003) +; OBJ: FileID: D:\src\llvm\build\t.cpp (0x0) +; OBJ: SourceLineNum: 8 +; OBJ: } +; OBJ: InlineeSourceLine { +; OBJ: Inlinee: foo (0x1004) +; OBJ: FileID: D:\src\llvm\build\t.cpp (0x0) +; OBJ: SourceLineNum: 2 +; OBJ: } +; OBJ: ] +; OBJ: Subsection [ +; OBJ: SubSectionType: Symbols (0xF1) +; OBJ: ProcStart { +; OBJ: PtrParent: 0x0 +; OBJ: PtrEnd: 0x0 +; OBJ: PtrNext: 0x0 +; OBJ: CodeSize: 0x3D +; OBJ: DbgStart: 0x0 +; OBJ: DbgEnd: 0x0 +; OBJ: FunctionType: 0x0 +; OBJ: CodeOffset: ?baz@@YAXXZ+0x0 +; OBJ: Segment: 0x0 +; OBJ: Flags [ (0x0) +; OBJ: ] +; OBJ: DisplayName: baz +; OBJ: LinkageName: ?baz@@YAXXZ +; OBJ: } +; OBJ: InlineSite { +; OBJ: PtrParent: 0x0 +; OBJ: PtrEnd: 0x0 +; OBJ: Inlinee: bar (0x1003) +; OBJ: BinaryAnnotations [ +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x8, LineOffset: 1} +; OBJ-NEXT: ChangeLineOffset: -6 +; OBJ-NEXT: ChangeCodeOffset: 0x7 +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xA, LineOffset: 1} +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1} +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1} +; OBJ-NEXT: ChangeLineOffset: 5 +; OBJ-NEXT: ChangeCodeOffset: 0x7 +; OBJ-NEXT: ChangeCodeLength: 0x7 +; OBJ: ] +; OBJ: } +; OBJ: InlineSite { +; OBJ: PtrParent: 0x0 +; OBJ: PtrEnd: 0x0 +; OBJ: Inlinee: foo (0x1004) +; OBJ: BinaryAnnotations [ +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xF, LineOffset: 1} +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xA, LineOffset: 1} +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1} +; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1} +; OBJ-NEXT: ChangeCodeLength: 0x7 +; OBJ: ] +; OBJ: } +; OBJ: InlineSiteEnd { +; OBJ: } +; OBJ: InlineSiteEnd { +; OBJ: } +; OBJ: ProcEnd +; OBJ: ] ; ModuleID = 't.cpp' target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" |

