Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions src/coreclr/inc/sospriv.idl
Original file line number Diff line number Diff line change
Expand Up @@ -657,3 +657,82 @@ interface ISOSDacInterface17 : IUnknown
[out] ISOSStressLogMsgEnum **ppEnum);
HRESULT GetStressLogMemoryRanges([out] ISOSMemoryEnum **ppEnum);
}

cpp_quote("#ifndef _SOS_GCInfoData")
cpp_quote("#define _SOS_GCInfoData")

typedef struct _SOSCodeRange
{
unsigned int BeginOffset;
unsigned int EndOffset;
} SOSCodeRange;

typedef struct _SOSGCInfoHeader
{
ULONG SizeOf;

unsigned int GcInfoVersion;
unsigned int CodeSize;
unsigned int PrologSize;
unsigned int StackBaseRegister;
unsigned int SizeOfStackParameterArea;

BOOL IsVarArg;
BOOL WantsReportOnlyLeaf;
BOOL HasTailCalls;

BOOL GSCookieIsPresent;
int GSCookieStackSlot;
unsigned int GSCookieValidRangeStart;
unsigned int GSCookieValidRangeEnd;

BOOL PSPSymIsPresent;
int PSPSymStackSlot;

BOOL GenericsInstContextIsPresent;
int GenericsInstContextStackSlot;
unsigned int GenericsInstContextKind;
} SOSGCInfoHeader;

typedef struct _SOSGCSlotLifetime
{
unsigned int BeginOffset;
unsigned int EndOffset;
int IsRegister;
unsigned int RegisterNumber;
int SpOffset;
unsigned int BaseRegister;
unsigned int GcFlags;
} SOSGCSlotLifetime;

cpp_quote("#endif //_SOS_GCInfoData")

[
object,
local,
uuid(3dccf95b-bca2-40ee-8b83-d8d7574a1df0)
]
interface ISOSDacInterface18 : IUnknown
{
HRESULT GetGCInfoHeader(
[in] CLRDATA_ADDRESS ip,
[in, out] SOSGCInfoHeader* header);

HRESULT GetGCInfoInterruptibleRanges(
[in] CLRDATA_ADDRESS ip,
[in] ULONG count,
[out, size_is(count), length_is(*pNeeded)] SOSCodeRange* ranges,
[out] ULONG* pNeeded);

HRESULT GetGCInfoSafePoints(
[in] CLRDATA_ADDRESS ip,
[in] ULONG count,
[out, size_is(count), length_is(*pNeeded)] unsigned int* offsets,
[out] ULONG* pNeeded);

HRESULT GetGCInfoSlotLifetimes(
[in] CLRDATA_ADDRESS ip,
[in] ULONG count,
[out, size_is(count), length_is(*pNeeded)] SOSGCSlotLifetime* lifetimes,
[out] ULONG* pNeeded);
}
13 changes: 12 additions & 1 deletion src/coreclr/pal/prebuilt/idl/sospriv_i.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,22 @@ MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface15,0x7ed81261,0x52a9,0x4a23,0xa3,0x58,

MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface16,0x4ba12ff8,0xdaac,0x4e43,0xac,0x56,0x98,0xcf,0x8d,0x5c,0x59,0x5d);


MIDL_DEFINE_GUID(IID, IID_ISOSStressLogThreadEnum,0x94a2bd3d,0xab3d,0x43bf,0x81,0xd8,0x3a,0xe9,0x6b,0x8e,0x33,0xcd);


MIDL_DEFINE_GUID(IID, IID_ISOSStressLogMsgEnum,0x437cb033,0xafe7,0x4c0f,0xa4,0xa7,0x82,0xc8,0x91,0xbc,0x04,0x9e);


MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface17,0x2f4bb585,0xed50,0x479e,0xbb,0xe0,0x10,0xa9,0x5a,0x5d,0xa3,0xbb);


MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface18,0x3dccf95b,0xbca2,0x40ee,0x8b,0x83,0xd8,0xd7,0x57,0x4a,0x1d,0xf0);

#undef MIDL_DEFINE_GUID

#ifdef __cplusplus
}
#endif



Loading
Loading