diff options
author | Juan Hoyos <juan.hoyos@microsoft.com> | 2019-06-26 10:11:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-26 10:11:56 -0700 |
commit | 394edf40a089ac3fae5415dba8235b89c7133319 (patch) | |
tree | b345f3742355429ce2ea9d7790fe37b4ee6fe6f3 /src/pal | |
parent | be31aaea6402390d808fa41d4cd1fa9b68f4cdd0 (diff) | |
download | coreclr-394edf40a089ac3fae5415dba8235b89c7133319.tar.gz coreclr-394edf40a089ac3fae5415dba8235b89c7133319.tar.bz2 coreclr-394edf40a089ac3fae5415dba8235b89c7133319.zip |
Delegate inspection API in the DBI (#25362)
* Add ICorDebugDelegateObjectValue interfaces
* Expose appropriate HR (CORDBG_E_UNSUPPORTED_DELEGATE)
* Partially DACize DelegateObject
* Add DacDbi method for delegate inspection
Diffstat (limited to 'src/pal')
-rw-r--r-- | src/pal/prebuilt/corerror/mscorurt.rc | 1 | ||||
-rw-r--r-- | src/pal/prebuilt/idl/cordebug_i.cpp | 5 | ||||
-rw-r--r-- | src/pal/prebuilt/inc/cordebug.h | 129 | ||||
-rw-r--r-- | src/pal/prebuilt/inc/corerror.h | 1 |
4 files changed, 119 insertions, 17 deletions
diff --git a/src/pal/prebuilt/corerror/mscorurt.rc b/src/pal/prebuilt/corerror/mscorurt.rc index ee8ef677a7..ebdf18e2fb 100644 --- a/src/pal/prebuilt/corerror/mscorurt.rc +++ b/src/pal/prebuilt/corerror/mscorurt.rc @@ -312,6 +312,7 @@ BEGIN MSG_FOR_URT_HR(CORDBG_E_MISSING_DEBUGGER_EXPORTS) "The debuggee memory space does not have the expected debugging export table." MSG_FOR_URT_HR(CORDBG_E_DATA_TARGET_ERROR) "Failure when calling a data target method." MSG_FOR_URT_HR(CORDBG_E_NO_IMAGE_AVAILABLE) "Couldn't find a native image." + MSG_FOR_URT_HR(CORDBG_E_UNSUPPORTED_DELEGATE) "The delegate contains a delegate currently not supported by the API." MSG_FOR_URT_HR(PEFMT_E_64BIT) "File is PE32+." MSG_FOR_URT_HR(PEFMT_E_32BIT) "File is PE32" MSG_FOR_URT_HR(NGEN_E_SYS_ASM_NI_MISSING) "NGen cannot proceed because Mscorlib.dll does not have a native image" diff --git a/src/pal/prebuilt/idl/cordebug_i.cpp b/src/pal/prebuilt/idl/cordebug_i.cpp index f7f625a805..65ed624a75 100644 --- a/src/pal/prebuilt/idl/cordebug_i.cpp +++ b/src/pal/prebuilt/idl/cordebug_i.cpp @@ -8,7 +8,7 @@ /* File created by MIDL compiler version 8.01.0622 */ /* at Mon Jan 18 19:14:07 2038 */ -/* Compiler settings for D:/dotnet/coreclr/src/inc/cordebug.idl: +/* Compiler settings for E:/repos/coreclr2/src/inc/cordebug.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622 protocol : dce , ms_ext, c_ext, robust error checks: allocation ref bounds_check enum stub_data @@ -364,6 +364,9 @@ MIDL_DEFINE_GUID(IID, IID_ICorDebugObjectValue,0x18AD3D6E,0xB7D2,0x11d2,0xBD,0x0 MIDL_DEFINE_GUID(IID, IID_ICorDebugObjectValue2,0x49E4A320,0x4A9B,0x4eca,0xB1,0x05,0x22,0x9F,0xB7,0xD5,0x00,0x9F); +MIDL_DEFINE_GUID(IID, IID_ICorDebugDelegateObjectValue,0x3AF70CC7,0x6047,0x47F6,0xA5,0xC5,0x09,0x0A,0x1A,0x62,0x26,0x38); + + MIDL_DEFINE_GUID(IID, IID_ICorDebugBoxValue,0xCC7BCAFC,0x8A68,0x11d2,0x98,0x3C,0x00,0x00,0xF8,0x08,0x34,0x2D); diff --git a/src/pal/prebuilt/inc/cordebug.h b/src/pal/prebuilt/inc/cordebug.h index a9742571a7..96dc9c0eb1 100644 --- a/src/pal/prebuilt/inc/cordebug.h +++ b/src/pal/prebuilt/inc/cordebug.h @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.01.0622 */ /* at Mon Jan 18 19:14:07 2038 */ -/* Compiler settings for F:/Dev/coreclr/src/inc/cordebug.idl: +/* Compiler settings for E:/repos/coreclr2/src/inc/cordebug.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622 protocol : dce , ms_ext, c_ext, robust error checks: allocation ref bounds_check enum stub_data @@ -738,6 +738,13 @@ typedef interface ICorDebugObjectValue2 ICorDebugObjectValue2; #endif /* __ICorDebugObjectValue2_FWD_DEFINED__ */ +#ifndef __ICorDebugDelegateObjectValue_FWD_DEFINED__ +#define __ICorDebugDelegateObjectValue_FWD_DEFINED__ +typedef interface ICorDebugDelegateObjectValue ICorDebugDelegateObjectValue; + +#endif /* __ICorDebugDelegateObjectValue_FWD_DEFINED__ */ + + #ifndef __ICorDebugBoxValue_FWD_DEFINED__ #define __ICorDebugBoxValue_FWD_DEFINED__ typedef interface ICorDebugBoxValue ICorDebugBoxValue; @@ -14686,6 +14693,96 @@ EXTERN_C const IID IID_ICorDebugObjectValue2; #endif /* __ICorDebugObjectValue2_INTERFACE_DEFINED__ */ +#ifndef __ICorDebugDelegateObjectValue_INTERFACE_DEFINED__ +#define __ICorDebugDelegateObjectValue_INTERFACE_DEFINED__ + +/* interface ICorDebugDelegateObjectValue */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_ICorDebugDelegateObjectValue; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3AF70CC7-6047-47F6-A5C5-090A1A622638") + ICorDebugDelegateObjectValue : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetTarget( + /* [out] */ ICorDebugReferenceValue **ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFunction( + /* [out] */ ICorDebugFunction **ppFunction) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICorDebugDelegateObjectValueVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICorDebugDelegateObjectValue * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICorDebugDelegateObjectValue * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICorDebugDelegateObjectValue * This); + + HRESULT ( STDMETHODCALLTYPE *GetTarget )( + ICorDebugDelegateObjectValue * This, + /* [out] */ ICorDebugReferenceValue **ppObject); + + HRESULT ( STDMETHODCALLTYPE *GetFunction )( + ICorDebugDelegateObjectValue * This, + /* [out] */ ICorDebugFunction **ppFunction); + + END_INTERFACE + } ICorDebugDelegateObjectValueVtbl; + + interface ICorDebugDelegateObjectValue + { + CONST_VTBL struct ICorDebugDelegateObjectValueVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICorDebugDelegateObjectValue_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICorDebugDelegateObjectValue_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICorDebugDelegateObjectValue_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICorDebugDelegateObjectValue_GetTarget(This,ppObject) \ + ( (This)->lpVtbl -> GetTarget(This,ppObject) ) + +#define ICorDebugDelegateObjectValue_GetFunction(This,ppFunction) \ + ( (This)->lpVtbl -> GetFunction(This,ppFunction) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICorDebugDelegateObjectValue_INTERFACE_DEFINED__ */ + + #ifndef __ICorDebugBoxValue_INTERFACE_DEFINED__ #define __ICorDebugBoxValue_INTERFACE_DEFINED__ @@ -14810,15 +14907,15 @@ EXTERN_C const IID IID_ICorDebugBoxValue; #endif /* __ICorDebugBoxValue_INTERFACE_DEFINED__ */ -/* interface __MIDL_itf_cordebug_0000_0099 */ +/* interface __MIDL_itf_cordebug_0000_0100 */ /* [local] */ #pragma warning(push) #pragma warning(disable:28718) -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0099_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0099_v0_0_s_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0100_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0100_v0_0_s_ifspec; #ifndef __ICorDebugStringValue_INTERFACE_DEFINED__ #define __ICorDebugStringValue_INTERFACE_DEFINED__ @@ -14958,14 +15055,14 @@ EXTERN_C const IID IID_ICorDebugStringValue; #endif /* __ICorDebugStringValue_INTERFACE_DEFINED__ */ -/* interface __MIDL_itf_cordebug_0000_0100 */ +/* interface __MIDL_itf_cordebug_0000_0101 */ /* [local] */ #pragma warning(pop) -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0100_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0100_v0_0_s_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0101_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0101_v0_0_s_ifspec; #ifndef __ICorDebugArrayValue_INTERFACE_DEFINED__ #define __ICorDebugArrayValue_INTERFACE_DEFINED__ @@ -17740,15 +17837,15 @@ EXTERN_C const IID IID_ICorDebugBlockingObjectEnum; #endif /* __ICorDebugBlockingObjectEnum_INTERFACE_DEFINED__ */ -/* interface __MIDL_itf_cordebug_0000_0124 */ +/* interface __MIDL_itf_cordebug_0000_0125 */ /* [local] */ #pragma warning(push) #pragma warning(disable:28718) -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0124_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0124_v0_0_s_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0125_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0125_v0_0_s_ifspec; #ifndef __ICorDebugMDA_INTERFACE_DEFINED__ #define __ICorDebugMDA_INTERFACE_DEFINED__ @@ -17888,7 +17985,7 @@ EXTERN_C const IID IID_ICorDebugMDA; #endif /* __ICorDebugMDA_INTERFACE_DEFINED__ */ -/* interface __MIDL_itf_cordebug_0000_0125 */ +/* interface __MIDL_itf_cordebug_0000_0126 */ /* [local] */ #pragma warning(pop) @@ -17896,8 +17993,8 @@ EXTERN_C const IID IID_ICorDebugMDA; #pragma warning(disable:28718) -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0125_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0125_v0_0_s_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0126_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0126_v0_0_s_ifspec; #ifndef __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__ #define __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__ @@ -18013,14 +18110,14 @@ EXTERN_C const IID IID_ICorDebugEditAndContinueErrorInfo; #endif /* __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__ */ -/* interface __MIDL_itf_cordebug_0000_0126 */ +/* interface __MIDL_itf_cordebug_0000_0127 */ /* [local] */ #pragma warning(pop) -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0126_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0126_v0_0_s_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0127_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0127_v0_0_s_ifspec; #ifndef __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__ #define __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__ diff --git a/src/pal/prebuilt/inc/corerror.h b/src/pal/prebuilt/inc/corerror.h index 7bd0c10221..15dc301546 100644 --- a/src/pal/prebuilt/inc/corerror.h +++ b/src/pal/prebuilt/inc/corerror.h @@ -383,6 +383,7 @@ #define CORDBG_E_MISSING_DEBUGGER_EXPORTS EMAKEHR(0x1c4f) #define CORDBG_E_DATA_TARGET_ERROR EMAKEHR(0x1c61) #define CORDBG_E_NO_IMAGE_AVAILABLE EMAKEHR(0x1c64) +#define CORDBG_E_UNSUPPORTED_DELEGATE EMAKEHR(0x1c68) #define PEFMT_E_64BIT EMAKEHR(0x1d02) #define PEFMT_E_32BIT EMAKEHR(0x1d0b) #define NGEN_E_SYS_ASM_NI_MISSING EMAKEHR(0x1f06) |