From 60228d17db1ea26788b42cc60dab2b57232f806b Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Tue, 13 Aug 2024 02:47:11 +0000
Subject: [PATCH 4/5] include: Add new DebugRegisters2 interface in dbgeng.h

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/include/dbgeng.h | 43 ++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/mingw-w64-headers/include/dbgeng.h 
b/mingw-w64-headers/include/dbgeng.h
index 1d2759a..83b7ccb 100644
--- a/mingw-w64-headers/include/dbgeng.h
+++ b/mingw-w64-headers/include/dbgeng.h
@@ -60,6 +60,7 @@ extern "C" {
   
DEFINE_GUID(IID_IDebugOutputCallbacks,0x4bf58045,0xd654,0x4c40,0xb0,0xaf,0x68,0x30,0x90,0xf3,0x56,0xdc);
   
DEFINE_GUID(IID_IDebugOutputCallbacksWide,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x34,0xad,0x5e,0xd3,0x76,0x4c);
   
DEFINE_GUID(IID_IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93);
+  
DEFINE_GUID(IID_IDebugRegisters2,0x1656afa9,0x19c6,0x4e3a,0x97,0xe7,0x5d,0xc9,0x16,0x0c,0xf9,0xc4);
   
DEFINE_GUID(IID_IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab);
   
DEFINE_GUID(IID_IDebugSymbolGroup2,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7);
   
DEFINE_GUID(IID_IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50);
@@ -109,6 +110,7 @@ extern "C" {
   typedef struct IDebugOutputCallbacks *PDEBUG_OUTPUT_CALLBACKS;
   typedef struct IDebugOutputCallbacksWide *PDEBUG_OUTPUT_CALLBACKS_WIDE;
   typedef struct IDebugRegisters *PDEBUG_REGISTERS;
+  typedef struct IDebugRegisters2 *PDEBUG_REGISTERS2;
   typedef struct IDebugSymbolGroup *PDEBUG_SYMBOL_GROUP;
   typedef struct IDebugSymbolGroup2 *PDEBUG_SYMBOL_GROUP2;
   typedef struct IDebugSymbols *PDEBUG_SYMBOLS;
@@ -3295,6 +3297,47 @@ 
__CRT_UUID_DECL(IDebugOutputCallbacksWide,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x3
 
__CRT_UUID_DECL(IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93)
 #endif
 
+#define DEBUG_REGSRC_DEBUGGEE 0x00000000
+#define DEBUG_REGSRC_EXPLICIT 0x00000001
+#define DEBUG_REGSRC_FRAME 0x00000002
+
+#undef INTERFACE
+#define INTERFACE IDebugRegisters2
+  DECLARE_INTERFACE_(IDebugRegisters2, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetNumberRegisters)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetDescription)(THIS_ ULONG Register, PSTR NameBuffer, ULONG 
NameBufferSize, PULONG NameSize, PDEBUG_REGISTER_DESCRIPTION Desc) PURE;
+    STDMETHOD(GetIndexByName)(THIS_ PCSTR Name, PULONG Index) PURE;
+    STDMETHOD(GetValue)(THIS_ ULONG Register, PDEBUG_VALUE Value) PURE;
+    STDMETHOD(SetValue)(THIS_ ULONG Register, PDEBUG_VALUE Value) PURE;
+    STDMETHOD(GetValues)(THIS_ ULONG Count, PULONG Indices, ULONG Start, 
PDEBUG_VALUE Values) PURE;
+    STDMETHOD(SetValues)(THIS_ ULONG Count, PULONG Indices, ULONG Start, 
PDEBUG_VALUE Values) PURE;
+    STDMETHOD(OutputRegisters)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
+    STDMETHOD(GetInstructionOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(GetStackOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(GetFrameOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(GetDescriptionWide)(THIS_ ULONG Register, PWSTR NameBuffer, 
ULONG NameBufferSize, PULONG NameSize, PDEBUG_REGISTER_DESCRIPTION Desc) PURE;
+    STDMETHOD(GetIndexByNameWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
+    STDMETHOD(GetNumberPseudoRegisters)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetPseudoDescription)(THIS_ ULONG Register, PSTR NameBuffer, 
ULONG NameBufferSize, PULONG NameSize, PULONG64 TypeModule, PULONG TypeId) PURE;
+    STDMETHOD(GetPseudoDescriptionWide)(THIS_ ULONG Register, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 TypeModule, PULONG 
TypeId) PURE;
+    STDMETHOD(GetPseudoIndexByName)(THIS_ PCSTR Name, PULONG Index) PURE;
+    STDMETHOD(GetPseudoIndexByNameWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
+    STDMETHOD(GetPseudoValues)(THIS_ ULONG Source, ULONG Count, PULONG 
Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
+    STDMETHOD(SetPseudoValues)(THIS_ ULONG Source, ULONG Count, PULONG 
Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
+    STDMETHOD(GetValues2)(THIS_ ULONG Source, ULONG Count, PULONG Indices, 
ULONG Start, PDEBUG_VALUE Values) PURE;
+    STDMETHOD(SetValues2)(THIS_ ULONG Source, ULONG Count, PULONG Indices, 
ULONG Start, PDEBUG_VALUE Values) PURE;
+    STDMETHOD(OutputRegisters2)(THIS_ ULONG OutputControl, ULONG Source, ULONG 
Flags) PURE;
+    STDMETHOD(GetInstructionOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
+    STDMETHOD(GetStackOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
+    STDMETHOD(GetFrameOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugRegisters2,0x1656afa9,0x19c6,0x4e3a,0x97,0xe7,0x5d,0xc9,0x16,0x0c,0xf9,0xc4)
+#endif
+
 #define DEBUG_OUTPUT_SYMBOLS_DEFAULT 0x00000000
 #define DEBUG_OUTPUT_SYMBOLS_NO_NAMES 0x00000001
 #define DEBUG_OUTPUT_SYMBOLS_NO_OFFSETS 0x00000002
-- 
2.46.0

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to