diff options
author | Aaron Robinson <arobins@microsoft.com> | 2021-07-02 23:47:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-02 23:47:06 +0300 |
commit | b862155e1bb5f0718410b0ccc1601cddffe9077a (patch) | |
tree | a9b74e6f8b64892c8a89a48cd2b9074f25469888 /src/coreclr/pal | |
parent | e8572d3e5d23e624dac4f3744c745885a6d3addb (diff) |
Add support to DAC for reading tagged memory on tracked types (#54994)
* Add support to DAC for reading tagged memory on tracked types
* Build error on macOS.
* DACize the relevant SyncBlock APIs.
Create helper function for tagged memory API querying.
Diffstat (limited to 'src/coreclr/pal')
-rw-r--r-- | src/coreclr/pal/prebuilt/idl/sospriv_i.cpp | 2 | ||||
-rw-r--r-- | src/coreclr/pal/prebuilt/inc/sospriv.h | 96 |
2 files changed, 98 insertions, 0 deletions
diff --git a/src/coreclr/pal/prebuilt/idl/sospriv_i.cpp b/src/coreclr/pal/prebuilt/idl/sospriv_i.cpp index c00c70a183b..2f9afdc48e3 100644 --- a/src/coreclr/pal/prebuilt/idl/sospriv_i.cpp +++ b/src/coreclr/pal/prebuilt/idl/sospriv_i.cpp @@ -109,6 +109,8 @@ MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface9,0x4eca42d8,0x7e7b,0x4c8a,0xa1,0x16,0 MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface10,0x90B8FCC3,0x7251,0x4B0A,0xAE,0x3D,0x5C,0x13,0xA6,0x7E,0xC9,0xAA); +MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface11,0x96BA1DB9,0x14CD,0x4492,0x80,0x65,0x1C,0xAA,0xEC,0xF6,0xE5,0xCF); + #undef MIDL_DEFINE_GUID #ifdef __cplusplus diff --git a/src/coreclr/pal/prebuilt/inc/sospriv.h b/src/coreclr/pal/prebuilt/inc/sospriv.h index 367ca229043..5c8f17a7fff 100644 --- a/src/coreclr/pal/prebuilt/inc/sospriv.h +++ b/src/coreclr/pal/prebuilt/inc/sospriv.h @@ -2896,6 +2896,102 @@ EXTERN_C const IID IID_ISOSDacInterface10; #endif /* __ISOSDacInterface10_INTERFACE_DEFINED__ */ +#ifndef __ISOSDacInterface11_INTERFACE_DEFINED__ +#define __ISOSDacInterface11_INTERFACE_DEFINED__ + +/* interface ISOSDacInterface11 */ +/* [uuid][local][object] */ + + +EXTERN_C const IID IID_ISOSDacInterface11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("96BA1DB9-14CD-4492-8065-1CAAECF6E5CF") + ISOSDacInterface11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE IsTrackedType( + CLRDATA_ADDRESS objAddr, + BOOL *isTrackedType, + BOOL *hasTaggedMemory) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTaggedMemory( + CLRDATA_ADDRESS objAddr, + CLRDATA_ADDRESS *taggedMemory, + size_t *taggedMemorySizeInBytes) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ISOSDacInterface11Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISOSDacInterface11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISOSDacInterface11 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISOSDacInterface11 * This); + + HRESULT ( STDMETHODCALLTYPE *IsTrackedType )( + ISOSDacInterface11 * This, + CLRDATA_ADDRESS objAddr, + BOOL *isTrackedType, + BOOL *hasTaggedMemory); + + HRESULT ( STDMETHODCALLTYPE *GetTaggedMemory )( + ISOSDacInterface11 * This, + CLRDATA_ADDRESS objAddr, + CLRDATA_ADDRESS *taggedMemory, + size_t *taggedMemorySizeInBytes); + + END_INTERFACE + } ISOSDacInterface11Vtbl; + + interface ISOSDacInterface11 + { + CONST_VTBL struct ISOSDacInterface11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISOSDacInterface11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISOSDacInterface11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISOSDacInterface11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISOSDacInterface11_IsTrackedType(This,objAddr,isTrackedType,hasTaggedMemory) \ + ( (This)->lpVtbl -> IsTrackedType(This,objAddr,isTrackedType,hasTaggedMemory) ) + +#define ISOSDacInterface11_GetTaggedMemory(This,objAddr,taggedMemory,taggedMemorySizeInBytes) \ + ( (This)->lpVtbl -> GetTaggedMemory(This,objAddr,taggedMemory,taggedMemorySizeInBytes) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISOSDacInterface11_INTERFACE_DEFINED__ */ /* Additional Prototypes for ALL interfaces */ |