summaryrefslogtreecommitdiff
path: root/src/pal/prebuilt/inc/sospriv.h
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2016-02-08 17:47:31 -0800
committerMike McLaughlin <mikem@microsoft.com>2016-02-10 13:38:08 -0800
commit7d74570d33823d4734fa287bc21a81ff12f7b40a (patch)
treea5c30abede3ac0679554444651fa1026288ae594 /src/pal/prebuilt/inc/sospriv.h
parentceb0a800ad650a36a32e543146669e9f3654e948 (diff)
downloadcoreclr-7d74570d33823d4734fa287bc21a81ff12f7b40a.tar.gz
coreclr-7d74570d33823d4734fa287bc21a81ff12f7b40a.tar.bz2
coreclr-7d74570d33823d4734fa287bc21a81ff12f7b40a.zip
Fix SOS managed breakpoints when coreclr symbols are stripped.
Added a SOS DAC interface (ISOSDacInterface4::GetClrNotification) to get the exception notification arguments instead of using the GetLastExceptionInformation function from the lldb sosplugin that depends on coreclr symbols being present. On the coreclr side, the clr notification arguments are saved in a global variable that is DAC accessible. A critical section was added to protect this global variable while the special exception is raised. Setting the internal COMPlus_DebugBreakOnAssert environment variable causes 3 or 4 breaks in the debugger with no reason. It was breaking in the function that was determining whether it should break. I was using COMPlus_BreakOnEELoad=2 to break after coreclr was loaded and initialized to set managed breakpoints and on a debug build it generates an assert (on release just a DebugBreak).
Diffstat (limited to 'src/pal/prebuilt/inc/sospriv.h')
-rw-r--r--src/pal/prebuilt/inc/sospriv.h109
1 files changed, 103 insertions, 6 deletions
diff --git a/src/pal/prebuilt/inc/sospriv.h b/src/pal/prebuilt/inc/sospriv.h
index 65e1229d3d..ae881659e5 100644
--- a/src/pal/prebuilt/inc/sospriv.h
+++ b/src/pal/prebuilt/inc/sospriv.h
@@ -1,13 +1,19 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
- /* File created by MIDL compiler version 8.00.0603 */
+ /* File created by MIDL compiler version 8.00.0613 */
+/* at Mon Jan 18 19:14:07 2038
+ */
+/* Compiler settings for C:/ssd/coreclr/src/inc/sospriv.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0613
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
/* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
@@ -23,7 +29,7 @@
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
+#endif /* __RPCNDR_H_VERSION__ */
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
@@ -88,6 +94,13 @@ typedef interface ISOSDacInterface3 ISOSDacInterface3;
#endif /* __ISOSDacInterface3_FWD_DEFINED__ */
+#ifndef __ISOSDacInterface4_FWD_DEFINED__
+#define __ISOSDacInterface4_FWD_DEFINED__
+typedef interface ISOSDacInterface4 ISOSDacInterface4;
+
+#endif /* __ISOSDacInterface4_FWD_DEFINED__ */
+
+
/* header files for imported files */
#include "unknwn.h"
#include "xclrdata.h"
@@ -2089,6 +2102,90 @@ EXTERN_C const IID IID_ISOSDacInterface3;
#endif /* __ISOSDacInterface3_INTERFACE_DEFINED__ */
+#ifndef __ISOSDacInterface4_INTERFACE_DEFINED__
+#define __ISOSDacInterface4_INTERFACE_DEFINED__
+
+/* interface ISOSDacInterface4 */
+/* [uuid][local][object] */
+
+
+EXTERN_C const IID IID_ISOSDacInterface4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("74B9D34C-A612-4B07-93DD-5462178FCE11")
+ ISOSDacInterface4 : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClrNotification(
+ CLRDATA_ADDRESS arguments[ ],
+ int count,
+ int *pNeeded) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ISOSDacInterface4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ISOSDacInterface4 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ISOSDacInterface4 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ISOSDacInterface4 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetClrNotification )(
+ ISOSDacInterface4 * This,
+ CLRDATA_ADDRESS arguments[ ],
+ int count,
+ int *pNeeded);
+
+ END_INTERFACE
+ } ISOSDacInterface4Vtbl;
+
+ interface ISOSDacInterface4
+ {
+ CONST_VTBL struct ISOSDacInterface4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISOSDacInterface4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ISOSDacInterface4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ISOSDacInterface4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ISOSDacInterface4_GetClrNotification(This,arguments,count,pNeeded) \
+ ( (This)->lpVtbl -> GetClrNotification(This,arguments,count,pNeeded) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ISOSDacInterface4_INTERFACE_DEFINED__ */
+
+
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */