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/lib/MC/MCFragment.cpp | |
parent | 7d6b924df841faff6893207044cc57b02464b255 (diff) | |
download | llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.zip llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.tar.gz llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.tar.bz2 |
[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/lib/MC/MCFragment.cpp')
-rw-r--r-- | llvm/lib/MC/MCFragment.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/llvm/lib/MC/MCFragment.cpp b/llvm/lib/MC/MCFragment.cpp index 67f57a5..bfadfda 100644 --- a/llvm/lib/MC/MCFragment.cpp +++ b/llvm/lib/MC/MCFragment.cpp @@ -289,6 +289,9 @@ void MCFragment::destroy() { case FT_SafeSEH: delete cast<MCSafeSEHFragment>(this); return; + case FT_CVInlineLines: + delete cast<MCCVInlineLineTableFragment>(this); + return; case FT_Dummy: delete cast<MCDummyFragment>(this); return; @@ -327,9 +330,8 @@ LLVM_DUMP_METHOD void MCFragment::dump() { case MCFragment::FT_DwarfFrame: OS << "MCDwarfCallFrameFragment"; break; case MCFragment::FT_LEB: OS << "MCLEBFragment"; break; case MCFragment::FT_SafeSEH: OS << "MCSafeSEHFragment"; break; - case MCFragment::FT_Dummy: - OS << "MCDummyFragment"; - break; + case MCFragment::FT_CVInlineLines: OS << "MCCVInlineLineTableFragment"; break; + case MCFragment::FT_Dummy: OS << "MCDummyFragment"; break; } OS << "<MCFragment " << (void*) this << " LayoutOrder:" << LayoutOrder @@ -427,6 +429,12 @@ LLVM_DUMP_METHOD void MCFragment::dump() { OS << " Sym:" << F->getSymbol(); break; } + case MCFragment::FT_CVInlineLines: { + const auto *F = cast<MCCVInlineLineTableFragment>(this); + OS << "\n "; + OS << " Sym:" << *F->getFnStartSym(); + break; + } case MCFragment::FT_Dummy: break; } |