summaryrefslogtreecommitdiff
path: root/src/debug/di
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2015-12-03 16:24:46 -0800
committerMike McLaughlin <mikem@microsoft.com>2015-12-07 14:38:29 -0800
commit25369d2f68b7cd0c10b518350edfdf3251be8d68 (patch)
treeef04481d7408a73c54373b2ef700d2b2f605fe6e /src/debug/di
parent9803ebe310d251a22499897a71fcda4407a2e468 (diff)
downloadcoreclr-25369d2f68b7cd0c10b518350edfdf3251be8d68.tar.gz
coreclr-25369d2f68b7cd0c10b518350edfdf3251be8d68.tar.bz2
coreclr-25369d2f68b7cd0c10b518350edfdf3251be8d68.zip
Add new IPC message for out of context unwinding used for HelperMethodFrames.
Diffstat (limited to 'src/debug/di')
-rw-r--r--src/debug/di/shimdatatarget.cpp15
-rw-r--r--src/debug/di/shimdatatarget.h3
-rw-r--r--src/debug/di/shimlocaldatatarget.cpp20
-rw-r--r--src/debug/di/shimremotedatatarget.cpp16
4 files changed, 38 insertions, 16 deletions
diff --git a/src/debug/di/shimdatatarget.cpp b/src/debug/di/shimdatatarget.cpp
index 8221a0582a..22eed159dd 100644
--- a/src/debug/di/shimdatatarget.cpp
+++ b/src/debug/di/shimdatatarget.cpp
@@ -80,21 +80,6 @@ DWORD ShimDataTarget::GetPid()
}
//---------------------------------------------------------------------------------------
-//
-// Unwind the stack to the next frame.
-//
-// Return Value:
-// context and contextPointers filled in with the next frame
-//
-HRESULT STDMETHODCALLTYPE ShimDataTarget::VirtualUnwind(DWORD threadId, ULONG32 contextSize, PBYTE context)
-{
-#ifndef FEATURE_PAL
- _ASSERTE(!"ShimDataTarget::VirtualUnwind NOT IMPLEMENTED");
-#endif
- return E_NOTIMPL;
-}
-
-//---------------------------------------------------------------------------------------
// Hook a custom function to handle ICorDebugMutableDataTarget::ContinueStatusChanged
//
// Arguments:
diff --git a/src/debug/di/shimdatatarget.h b/src/debug/di/shimdatatarget.h
index 145b30cde1..64da7e9ef5 100644
--- a/src/debug/di/shimdatatarget.h
+++ b/src/debug/di/shimdatatarget.h
@@ -90,7 +90,8 @@ public:
//
// Unwind to the next stack frame
- virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(DWORD threadId, ULONG32 contextSize, PBYTE context);
+ virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(
+ DWORD threadId, ULONG32 contextSize, PBYTE context) = 0;
protected:
// Pid of the target process.
diff --git a/src/debug/di/shimlocaldatatarget.cpp b/src/debug/di/shimlocaldatatarget.cpp
index 9f3ba2ec1d..2a8c3aaa6d 100644
--- a/src/debug/di/shimlocaldatatarget.cpp
+++ b/src/debug/di/shimlocaldatatarget.cpp
@@ -67,6 +67,9 @@ public:
DWORD dwThreadId,
CORDB_CONTINUE_STATUS dwContinueStatus);
+ virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(
+ DWORD threadId, ULONG32 contextSize, PBYTE context);
+
private:
// Handle to the process. We own this.
HANDLE m_hProcess;
@@ -450,3 +453,20 @@ ShimLocalDataTarget::ContinueStatusChanged(
}
return E_NOTIMPL;
}
+
+//---------------------------------------------------------------------------------------
+//
+// Unwind the stack to the next frame.
+//
+// Return Value:
+// context filled in with the next frame
+//
+HRESULT STDMETHODCALLTYPE
+ShimLocalDataTarget::VirtualUnwind(DWORD threadId, ULONG32 contextSize, PBYTE context)
+{
+#ifndef FEATURE_PAL
+ _ASSERTE(!"ShimLocalDataTarget::VirtualUnwind NOT IMPLEMENTED");
+#endif
+ return E_NOTIMPL;
+}
+
diff --git a/src/debug/di/shimremotedatatarget.cpp b/src/debug/di/shimremotedatatarget.cpp
index fd34d3317d..08874c5b41 100644
--- a/src/debug/di/shimremotedatatarget.cpp
+++ b/src/debug/di/shimremotedatatarget.cpp
@@ -64,6 +64,9 @@ public:
DWORD dwThreadId,
CORDB_CONTINUE_STATUS dwContinueStatus);
+ virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(
+ DWORD threadId, ULONG32 contextSize, PBYTE context);
+
private:
DbgTransportTarget * m_pProxy;
DbgTransportSession * m_pTransport;
@@ -332,3 +335,16 @@ ShimRemoteDataTarget::ContinueStatusChanged(
}
return E_NOTIMPL;
}
+
+//---------------------------------------------------------------------------------------
+//
+// Unwind the stack to the next frame.
+//
+// Return Value:
+// context filled in with the next frame
+//
+HRESULT STDMETHODCALLTYPE
+ShimRemoteDataTarget::VirtualUnwind(DWORD threadId, ULONG32 contextSize, PBYTE context)
+{
+ return m_pTransport->VirtualUnwind(threadId, contextSize, context);
+} \ No newline at end of file