aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCFragment.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-02-02 17:41:18 +0000
committerReid Kleckner <rnk@google.com>2016-02-02 17:41:18 +0000
commit1fcd610c9499d8f1eb42f339926ed17ec6d98ddd (patch)
treeb80a02a7939d74d6657ce1523b272f81ea84b403 /llvm/lib/MC/MCFragment.cpp
parent7d6b924df841faff6893207044cc57b02464b255 (diff)
downloadllvm-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.cpp14
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;
}