Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Robinson <arobins@microsoft.com>2021-07-02 23:47:06 +0300
committerGitHub <noreply@github.com>2021-07-02 23:47:06 +0300
commitb862155e1bb5f0718410b0ccc1601cddffe9077a (patch)
treea9b74e6f8b64892c8a89a48cd2b9074f25469888 /src/coreclr/pal
parente8572d3e5d23e624dac4f3744c745885a6d3addb (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.cpp2
-rw-r--r--src/coreclr/pal/prebuilt/inc/sospriv.h96
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 */