[PATCH 3/7] programs/winedbg: redefine internal types with predefined sizes

Eric Pouech wine at gitlab.winehq.org
Fri May 20 10:08:53 CDT 2022


From: Eric Pouech <eric.pouech at gmail.com>

this will help mapping a name to a basic type

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
---
 programs/winedbg/be_arm.c    | 36 ++++++-------
 programs/winedbg/be_arm64.c  | 68 ++++++++++++-------------
 programs/winedbg/be_i386.c   | 68 ++++++++++++-------------
 programs/winedbg/be_x86_64.c | 98 +++++++++++++++++------------------
 programs/winedbg/dbg.y       | 34 ++++++-------
 programs/winedbg/debugger.h  | 30 ++++++-----
 programs/winedbg/intvar.h    | 22 ++++----
 programs/winedbg/stack.c     |  7 +--
 programs/winedbg/types.c     | 99 +++++++++++++++++++++++++++++-------
 9 files changed, 266 insertions(+), 196 deletions(-)

diff --git a/programs/winedbg/be_arm.c b/programs/winedbg/be_arm.c
index a9551a40337..a505697c9bb 100644
--- a/programs/winedbg/be_arm.c
+++ b/programs/winedbg/be_arm.c
@@ -1722,24 +1722,24 @@ static void be_arm_print_segment_info(HANDLE hThread, const dbg_ctx_t *ctx)
 
 static struct dbg_internal_var be_arm_ctx[] =
 {
-    {CV_ARM_R0 +  0,    "r0",           (void*)FIELD_OFFSET(CONTEXT, R0),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  1,    "r1",           (void*)FIELD_OFFSET(CONTEXT, R1),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  2,    "r2",           (void*)FIELD_OFFSET(CONTEXT, R2),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  3,    "r3",           (void*)FIELD_OFFSET(CONTEXT, R3),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  4,    "r4",           (void*)FIELD_OFFSET(CONTEXT, R4),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  5,    "r5",           (void*)FIELD_OFFSET(CONTEXT, R5),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  6,    "r6",           (void*)FIELD_OFFSET(CONTEXT, R6),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  7,    "r7",           (void*)FIELD_OFFSET(CONTEXT, R7),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  8,    "r8",           (void*)FIELD_OFFSET(CONTEXT, R8),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  9,    "r9",           (void*)FIELD_OFFSET(CONTEXT, R9),     dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  10,   "r10",          (void*)FIELD_OFFSET(CONTEXT, R10),    dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  11,   "r11",          (void*)FIELD_OFFSET(CONTEXT, R11),    dbg_itype_unsigned_int},
-    {CV_ARM_R0 +  12,   "r12",          (void*)FIELD_OFFSET(CONTEXT, R12),    dbg_itype_unsigned_int},
-    {CV_ARM_SP,         "sp",           (void*)FIELD_OFFSET(CONTEXT, Sp),     dbg_itype_unsigned_int},
-    {CV_ARM_LR,         "lr",           (void*)FIELD_OFFSET(CONTEXT, Lr),     dbg_itype_unsigned_int},
-    {CV_ARM_PC,         "pc",           (void*)FIELD_OFFSET(CONTEXT, Pc),     dbg_itype_unsigned_int},
-    {CV_ARM_CPSR,       "cpsr",         (void*)FIELD_OFFSET(CONTEXT, Cpsr),   dbg_itype_unsigned_int},
-    {0,                 NULL,           0,                                         dbg_itype_none}
+    {CV_ARM_R0 +  0,    "r0",           (void*)FIELD_OFFSET(CONTEXT, R0),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  1,    "r1",           (void*)FIELD_OFFSET(CONTEXT, R1),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  2,    "r2",           (void*)FIELD_OFFSET(CONTEXT, R2),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  3,    "r3",           (void*)FIELD_OFFSET(CONTEXT, R3),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  4,    "r4",           (void*)FIELD_OFFSET(CONTEXT, R4),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  5,    "r5",           (void*)FIELD_OFFSET(CONTEXT, R5),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  6,    "r6",           (void*)FIELD_OFFSET(CONTEXT, R6),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  7,    "r7",           (void*)FIELD_OFFSET(CONTEXT, R7),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  8,    "r8",           (void*)FIELD_OFFSET(CONTEXT, R8),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  9,    "r9",           (void*)FIELD_OFFSET(CONTEXT, R9),     dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  10,   "r10",          (void*)FIELD_OFFSET(CONTEXT, R10),    dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  11,   "r11",          (void*)FIELD_OFFSET(CONTEXT, R11),    dbg_itype_unsigned_int32},
+    {CV_ARM_R0 +  12,   "r12",          (void*)FIELD_OFFSET(CONTEXT, R12),    dbg_itype_unsigned_int32},
+    {CV_ARM_SP,         "sp",           (void*)FIELD_OFFSET(CONTEXT, Sp),     dbg_itype_unsigned_int32},
+    {CV_ARM_LR,         "lr",           (void*)FIELD_OFFSET(CONTEXT, Lr),     dbg_itype_unsigned_int32},
+    {CV_ARM_PC,         "pc",           (void*)FIELD_OFFSET(CONTEXT, Pc),     dbg_itype_unsigned_int32},
+    {CV_ARM_CPSR,       "cpsr",         (void*)FIELD_OFFSET(CONTEXT, Cpsr),   dbg_itype_unsigned_int32},
+    {0,                 NULL,           0,                                    dbg_itype_none}
 };
 
 static BOOL be_arm_is_step_over_insn(const void* insn)
diff --git a/programs/winedbg/be_arm64.c b/programs/winedbg/be_arm64.c
index ab64801e6db..d9e0a97bce5 100644
--- a/programs/winedbg/be_arm64.c
+++ b/programs/winedbg/be_arm64.c
@@ -104,40 +104,40 @@ static void be_arm64_print_segment_info(HANDLE hThread, const dbg_ctx_t *ctx)
 
 static struct dbg_internal_var be_arm64_ctx[] =
 {
-    {CV_ARM64_PSTATE,     "cpsr",   (void*)FIELD_OFFSET(CONTEXT, Cpsr),    dbg_itype_unsigned_int},
-    {CV_ARM64_X0 +  0,    "x0",     (void*)FIELD_OFFSET(CONTEXT, u.s.X0),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  1,    "x1",     (void*)FIELD_OFFSET(CONTEXT, u.s.X1),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  2,    "x2",     (void*)FIELD_OFFSET(CONTEXT, u.s.X2),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  3,    "x3",     (void*)FIELD_OFFSET(CONTEXT, u.s.X3),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  4,    "x4",     (void*)FIELD_OFFSET(CONTEXT, u.s.X4),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  5,    "x5",     (void*)FIELD_OFFSET(CONTEXT, u.s.X5),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  6,    "x6",     (void*)FIELD_OFFSET(CONTEXT, u.s.X6),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  7,    "x7",     (void*)FIELD_OFFSET(CONTEXT, u.s.X7),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  8,    "x8",     (void*)FIELD_OFFSET(CONTEXT, u.s.X8),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  9,    "x9",     (void*)FIELD_OFFSET(CONTEXT, u.s.X9),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  10,   "x10",    (void*)FIELD_OFFSET(CONTEXT, u.s.X10), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  11,   "x11",    (void*)FIELD_OFFSET(CONTEXT, u.s.X11), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  12,   "x12",    (void*)FIELD_OFFSET(CONTEXT, u.s.X12), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  13,   "x13",    (void*)FIELD_OFFSET(CONTEXT, u.s.X13), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  14,   "x14",    (void*)FIELD_OFFSET(CONTEXT, u.s.X14), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  15,   "x15",    (void*)FIELD_OFFSET(CONTEXT, u.s.X15), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  16,   "x16",    (void*)FIELD_OFFSET(CONTEXT, u.s.X16), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  17,   "x17",    (void*)FIELD_OFFSET(CONTEXT, u.s.X17), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  18,   "x18",    (void*)FIELD_OFFSET(CONTEXT, u.s.X18), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  19,   "x19",    (void*)FIELD_OFFSET(CONTEXT, u.s.X19), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  20,   "x20",    (void*)FIELD_OFFSET(CONTEXT, u.s.X20), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  21,   "x21",    (void*)FIELD_OFFSET(CONTEXT, u.s.X21), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  22,   "x22",    (void*)FIELD_OFFSET(CONTEXT, u.s.X22), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  23,   "x23",    (void*)FIELD_OFFSET(CONTEXT, u.s.X23), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  24,   "x24",    (void*)FIELD_OFFSET(CONTEXT, u.s.X24), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  25,   "x25",    (void*)FIELD_OFFSET(CONTEXT, u.s.X25), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  26,   "x26",    (void*)FIELD_OFFSET(CONTEXT, u.s.X26), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  27,   "x27",    (void*)FIELD_OFFSET(CONTEXT, u.s.X27), dbg_itype_unsigned_long_int},
-    {CV_ARM64_X0 +  28,   "x28",    (void*)FIELD_OFFSET(CONTEXT, u.s.X28), dbg_itype_unsigned_long_int},
-    {CV_ARM64_FP,         "fp",     (void*)FIELD_OFFSET(CONTEXT, u.s.Fp),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_LR,         "lr",     (void*)FIELD_OFFSET(CONTEXT, u.s.Lr),  dbg_itype_unsigned_long_int},
-    {CV_ARM64_SP,         "sp",     (void*)FIELD_OFFSET(CONTEXT, Sp),      dbg_itype_unsigned_long_int},
-    {CV_ARM64_PC,         "pc",     (void*)FIELD_OFFSET(CONTEXT, Pc),      dbg_itype_unsigned_long_int},
+    {CV_ARM64_PSTATE,     "cpsr",   (void*)FIELD_OFFSET(CONTEXT, Cpsr),    dbg_itype_unsigned_int32},
+    {CV_ARM64_X0 +  0,    "x0",     (void*)FIELD_OFFSET(CONTEXT, u.s.X0),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  1,    "x1",     (void*)FIELD_OFFSET(CONTEXT, u.s.X1),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  2,    "x2",     (void*)FIELD_OFFSET(CONTEXT, u.s.X2),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  3,    "x3",     (void*)FIELD_OFFSET(CONTEXT, u.s.X3),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  4,    "x4",     (void*)FIELD_OFFSET(CONTEXT, u.s.X4),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  5,    "x5",     (void*)FIELD_OFFSET(CONTEXT, u.s.X5),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  6,    "x6",     (void*)FIELD_OFFSET(CONTEXT, u.s.X6),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  7,    "x7",     (void*)FIELD_OFFSET(CONTEXT, u.s.X7),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  8,    "x8",     (void*)FIELD_OFFSET(CONTEXT, u.s.X8),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  9,    "x9",     (void*)FIELD_OFFSET(CONTEXT, u.s.X9),  dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  10,   "x10",    (void*)FIELD_OFFSET(CONTEXT, u.s.X10), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  11,   "x11",    (void*)FIELD_OFFSET(CONTEXT, u.s.X11), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  12,   "x12",    (void*)FIELD_OFFSET(CONTEXT, u.s.X12), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  13,   "x13",    (void*)FIELD_OFFSET(CONTEXT, u.s.X13), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  14,   "x14",    (void*)FIELD_OFFSET(CONTEXT, u.s.X14), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  15,   "x15",    (void*)FIELD_OFFSET(CONTEXT, u.s.X15), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  16,   "x16",    (void*)FIELD_OFFSET(CONTEXT, u.s.X16), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  17,   "x17",    (void*)FIELD_OFFSET(CONTEXT, u.s.X17), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  18,   "x18",    (void*)FIELD_OFFSET(CONTEXT, u.s.X18), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  19,   "x19",    (void*)FIELD_OFFSET(CONTEXT, u.s.X19), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  20,   "x20",    (void*)FIELD_OFFSET(CONTEXT, u.s.X20), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  21,   "x21",    (void*)FIELD_OFFSET(CONTEXT, u.s.X21), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  22,   "x22",    (void*)FIELD_OFFSET(CONTEXT, u.s.X22), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  23,   "x23",    (void*)FIELD_OFFSET(CONTEXT, u.s.X23), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  24,   "x24",    (void*)FIELD_OFFSET(CONTEXT, u.s.X24), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  25,   "x25",    (void*)FIELD_OFFSET(CONTEXT, u.s.X25), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  26,   "x26",    (void*)FIELD_OFFSET(CONTEXT, u.s.X26), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  27,   "x27",    (void*)FIELD_OFFSET(CONTEXT, u.s.X27), dbg_itype_unsigned_int64},
+    {CV_ARM64_X0 +  28,   "x28",    (void*)FIELD_OFFSET(CONTEXT, u.s.X28), dbg_itype_unsigned_int64},
+    {CV_ARM64_FP,         "fp",     (void*)FIELD_OFFSET(CONTEXT, u.s.Fp),  dbg_itype_unsigned_int64},
+    {CV_ARM64_LR,         "lr",     (void*)FIELD_OFFSET(CONTEXT, u.s.Lr),  dbg_itype_unsigned_int64},
+    {CV_ARM64_SP,         "sp",     (void*)FIELD_OFFSET(CONTEXT, Sp),      dbg_itype_unsigned_int64},
+    {CV_ARM64_PC,         "pc",     (void*)FIELD_OFFSET(CONTEXT, Pc),      dbg_itype_unsigned_int64},
     {0,                   NULL,     0,                                     dbg_itype_none}
 };
 
diff --git a/programs/winedbg/be_i386.c b/programs/winedbg/be_i386.c
index ab86f9ec647..eae009c2e4a 100644
--- a/programs/winedbg/be_i386.c
+++ b/programs/winedbg/be_i386.c
@@ -277,40 +277,40 @@ static void be_i386_print_segment_info(HANDLE hThread, const dbg_ctx_t *ctx)
 
 static struct dbg_internal_var be_i386_ctx[] =
 {
-    {CV_REG_AL,         "AL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_char_int},
-    {CV_REG_CL,         "CL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_char_int},
-    {CV_REG_DL,         "DL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_char_int},
-    {CV_REG_BL,         "BL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_char_int},
-    {CV_REG_AH,         "AH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Eax)+1), dbg_itype_unsigned_char_int},
-    {CV_REG_CH,         "CH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Ecx)+1), dbg_itype_unsigned_char_int},
-    {CV_REG_DH,         "DH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Edx)+1), dbg_itype_unsigned_char_int},
-    {CV_REG_BH,         "BH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Ebx)+1), dbg_itype_unsigned_char_int},
-    {CV_REG_AX,         "AX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_short_int},
-    {CV_REG_CX,         "CX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_short_int},
-    {CV_REG_DX,         "DX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_short_int},
-    {CV_REG_BX,         "BX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_short_int},
-    {CV_REG_SP,         "SP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Esp),     dbg_itype_unsigned_short_int},
-    {CV_REG_BP,         "BP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebp),     dbg_itype_unsigned_short_int},
-    {CV_REG_SI,         "SI",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Esi),     dbg_itype_unsigned_short_int},
-    {CV_REG_DI,         "DI",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edi),     dbg_itype_unsigned_short_int},
-    {CV_REG_EAX,        "EAX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_int},
-    {CV_REG_ECX,        "ECX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_int},
-    {CV_REG_EDX,        "EDX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_int},
-    {CV_REG_EBX,        "EBX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_int},
-    {CV_REG_ESP,        "ESP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Esp),     dbg_itype_unsigned_int},
-    {CV_REG_EBP,        "EBP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebp),     dbg_itype_unsigned_int},
-    {CV_REG_ESI,        "ESI",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Esi),     dbg_itype_unsigned_int},
-    {CV_REG_EDI,        "EDI",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Edi),     dbg_itype_unsigned_int},
-    {CV_REG_ES,         "ES",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegEs),   dbg_itype_unsigned_short_int},
-    {CV_REG_CS,         "CS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegCs),   dbg_itype_unsigned_short_int},
-    {CV_REG_SS,         "SS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegSs),   dbg_itype_unsigned_short_int},
-    {CV_REG_DS,         "DS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegDs),   dbg_itype_unsigned_short_int},
-    {CV_REG_FS,         "FS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegFs),   dbg_itype_unsigned_short_int},
-    {CV_REG_GS,         "GS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegGs),   dbg_itype_unsigned_short_int},
-    {CV_REG_IP,         "IP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eip),     dbg_itype_unsigned_short_int},
-    {CV_REG_FLAGS,      "FLAGS",        (void*)FIELD_OFFSET(WOW64_CONTEXT, EFlags),  dbg_itype_unsigned_short_int},
-    {CV_REG_EIP,        "EIP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Eip),     dbg_itype_unsigned_int},
-    {CV_REG_EFLAGS,     "EFLAGS",       (void*)FIELD_OFFSET(WOW64_CONTEXT, EFlags),  dbg_itype_unsigned_int},
+    {CV_REG_AL,         "AL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_int8},
+    {CV_REG_CL,         "CL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_int8},
+    {CV_REG_DL,         "DL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_int8},
+    {CV_REG_BL,         "BL",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_int8},
+    {CV_REG_AH,         "AH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Eax)+1), dbg_itype_unsigned_int8},
+    {CV_REG_CH,         "CH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Ecx)+1), dbg_itype_unsigned_int8},
+    {CV_REG_DH,         "DH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Edx)+1), dbg_itype_unsigned_int8},
+    {CV_REG_BH,         "BH",           (void*)(FIELD_OFFSET(WOW64_CONTEXT, Ebx)+1), dbg_itype_unsigned_int8},
+    {CV_REG_AX,         "AX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_int16},
+    {CV_REG_CX,         "CX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_int16},
+    {CV_REG_DX,         "DX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_int16},
+    {CV_REG_BX,         "BX",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_int16},
+    {CV_REG_SP,         "SP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Esp),     dbg_itype_unsigned_int16},
+    {CV_REG_BP,         "BP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebp),     dbg_itype_unsigned_int16},
+    {CV_REG_SI,         "SI",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Esi),     dbg_itype_unsigned_int16},
+    {CV_REG_DI,         "DI",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Edi),     dbg_itype_unsigned_int16},
+    {CV_REG_EAX,        "EAX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Eax),     dbg_itype_unsigned_int32},
+    {CV_REG_ECX,        "ECX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ecx),     dbg_itype_unsigned_int32},
+    {CV_REG_EDX,        "EDX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Edx),     dbg_itype_unsigned_int32},
+    {CV_REG_EBX,        "EBX",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebx),     dbg_itype_unsigned_int32},
+    {CV_REG_ESP,        "ESP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Esp),     dbg_itype_unsigned_int32},
+    {CV_REG_EBP,        "EBP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Ebp),     dbg_itype_unsigned_int32},
+    {CV_REG_ESI,        "ESI",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Esi),     dbg_itype_unsigned_int32},
+    {CV_REG_EDI,        "EDI",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Edi),     dbg_itype_unsigned_int32},
+    {CV_REG_ES,         "ES",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegEs),   dbg_itype_unsigned_int16},
+    {CV_REG_CS,         "CS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegCs),   dbg_itype_unsigned_int16},
+    {CV_REG_SS,         "SS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegSs),   dbg_itype_unsigned_int16},
+    {CV_REG_DS,         "DS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegDs),   dbg_itype_unsigned_int16},
+    {CV_REG_FS,         "FS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegFs),   dbg_itype_unsigned_int16},
+    {CV_REG_GS,         "GS",           (void*)FIELD_OFFSET(WOW64_CONTEXT, SegGs),   dbg_itype_unsigned_int16},
+    {CV_REG_IP,         "IP",           (void*)FIELD_OFFSET(WOW64_CONTEXT, Eip),     dbg_itype_unsigned_int16},
+    {CV_REG_FLAGS,      "FLAGS",        (void*)FIELD_OFFSET(WOW64_CONTEXT, EFlags),  dbg_itype_unsigned_int16},
+    {CV_REG_EIP,        "EIP",          (void*)FIELD_OFFSET(WOW64_CONTEXT, Eip),     dbg_itype_unsigned_int32},
+    {CV_REG_EFLAGS,     "EFLAGS",       (void*)FIELD_OFFSET(WOW64_CONTEXT, EFlags),  dbg_itype_unsigned_int32},
     {CV_REG_ST0,        "ST0",          (void*)FIELD_OFFSET(WOW64_CONTEXT, FloatSave.RegisterArea[ 0]), dbg_itype_long_real},
     {CV_REG_ST0+1,      "ST1",          (void*)FIELD_OFFSET(WOW64_CONTEXT, FloatSave.RegisterArea[10]), dbg_itype_long_real},
     {CV_REG_ST0+2,      "ST2",          (void*)FIELD_OFFSET(WOW64_CONTEXT, FloatSave.RegisterArea[20]), dbg_itype_long_real},
diff --git a/programs/winedbg/be_x86_64.c b/programs/winedbg/be_x86_64.c
index a01bbf86575..b110e624b1f 100644
--- a/programs/winedbg/be_x86_64.c
+++ b/programs/winedbg/be_x86_64.c
@@ -179,55 +179,55 @@ static void be_x86_64_print_segment_info(HANDLE hThread, const dbg_ctx_t *ctx)
 
 static struct dbg_internal_var be_x86_64_ctx[] =
 {
-    {CV_AMD64_AL,       "AL",           (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_char_int},
-    {CV_AMD64_BL,       "BL",           (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_char_int},
-    {CV_AMD64_CL,       "CL",           (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_char_int},
-    {CV_AMD64_DL,       "DL",           (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_char_int},
-    {CV_AMD64_AH,       "AH",           (void*)(FIELD_OFFSET(CONTEXT, Rax)+1), dbg_itype_unsigned_char_int},
-    {CV_AMD64_BH,       "BH",           (void*)(FIELD_OFFSET(CONTEXT, Rbx)+1), dbg_itype_unsigned_char_int},
-    {CV_AMD64_CH,       "CH",           (void*)(FIELD_OFFSET(CONTEXT, Rcx)+1), dbg_itype_unsigned_char_int},
-    {CV_AMD64_DH,       "DH",           (void*)(FIELD_OFFSET(CONTEXT, Rdx)+1), dbg_itype_unsigned_char_int},
-    {CV_AMD64_AX,       "AX",           (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_BX,       "BX",           (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_CX,       "CX",           (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_DX,       "DX",           (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_SP,       "SP",           (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_BP,       "BP",           (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_SI,       "SI",           (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_DI,       "DI",           (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_short_int},
-    {CV_AMD64_EAX,      "EAX",          (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_int},
-    {CV_AMD64_EBX,      "EBX",          (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_int},
-    {CV_AMD64_ECX,      "ECX",          (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_int},
-    {CV_AMD64_EDX,      "EDX",          (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_int},
-    {CV_AMD64_ESP,      "ESP",          (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_int},
-    {CV_AMD64_EBP,      "EBP",          (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_int},
-    {CV_AMD64_ESI,      "ESI",          (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_int},
-    {CV_AMD64_EDI,      "EDI",          (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_int},
-    {CV_AMD64_ES,       "ES",           (void*)FIELD_OFFSET(CONTEXT, SegEs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_CS,       "CS",           (void*)FIELD_OFFSET(CONTEXT, SegCs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_SS,       "SS",           (void*)FIELD_OFFSET(CONTEXT, SegSs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_DS,       "DS",           (void*)FIELD_OFFSET(CONTEXT, SegDs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_FS,       "FS",           (void*)FIELD_OFFSET(CONTEXT, SegFs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_GS,       "GS",           (void*)FIELD_OFFSET(CONTEXT, SegGs),   dbg_itype_unsigned_short_int},
-    {CV_AMD64_FLAGS,    "FLAGS",        (void*)FIELD_OFFSET(CONTEXT, EFlags),  dbg_itype_unsigned_short_int},
-    {CV_AMD64_EFLAGS,   "EFLAGS",       (void*)FIELD_OFFSET(CONTEXT, EFlags),  dbg_itype_unsigned_int},
-    {CV_AMD64_RIP,      "RIP",          (void*)FIELD_OFFSET(CONTEXT, Rip),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RAX,      "RAX",          (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RBX,      "RBX",          (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RCX,      "RCX",          (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RDX,      "RDX",          (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RSP,      "RSP",          (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RBP,      "RBP",          (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RSI,      "RSI",          (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_RDI,      "RDI",          (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R8,       "R8",           (void*)FIELD_OFFSET(CONTEXT, R8),      dbg_itype_unsigned_long_int},
-    {CV_AMD64_R9,       "R9",           (void*)FIELD_OFFSET(CONTEXT, R9),      dbg_itype_unsigned_long_int},
-    {CV_AMD64_R10,      "R10",          (void*)FIELD_OFFSET(CONTEXT, R10),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R11,      "R11",          (void*)FIELD_OFFSET(CONTEXT, R11),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R12,      "R12",          (void*)FIELD_OFFSET(CONTEXT, R12),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R13,      "R13",          (void*)FIELD_OFFSET(CONTEXT, R13),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R14,      "R14",          (void*)FIELD_OFFSET(CONTEXT, R14),     dbg_itype_unsigned_long_int},
-    {CV_AMD64_R15,      "R15",          (void*)FIELD_OFFSET(CONTEXT, R15),     dbg_itype_unsigned_long_int},
+    {CV_AMD64_AL,       "AL",           (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_int8},
+    {CV_AMD64_BL,       "BL",           (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_int8},
+    {CV_AMD64_CL,       "CL",           (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_int8},
+    {CV_AMD64_DL,       "DL",           (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_int8},
+    {CV_AMD64_AH,       "AH",           (void*)(FIELD_OFFSET(CONTEXT, Rax)+1), dbg_itype_unsigned_int8},
+    {CV_AMD64_BH,       "BH",           (void*)(FIELD_OFFSET(CONTEXT, Rbx)+1), dbg_itype_unsigned_int8},
+    {CV_AMD64_CH,       "CH",           (void*)(FIELD_OFFSET(CONTEXT, Rcx)+1), dbg_itype_unsigned_int8},
+    {CV_AMD64_DH,       "DH",           (void*)(FIELD_OFFSET(CONTEXT, Rdx)+1), dbg_itype_unsigned_int8},
+    {CV_AMD64_AX,       "AX",           (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_int16},
+    {CV_AMD64_BX,       "BX",           (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_int16},
+    {CV_AMD64_CX,       "CX",           (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_int16},
+    {CV_AMD64_DX,       "DX",           (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_int16},
+    {CV_AMD64_SP,       "SP",           (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_int16},
+    {CV_AMD64_BP,       "BP",           (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_int16},
+    {CV_AMD64_SI,       "SI",           (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_int16},
+    {CV_AMD64_DI,       "DI",           (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_int16},
+    {CV_AMD64_EAX,      "EAX",          (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_int32},
+    {CV_AMD64_EBX,      "EBX",          (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_int32},
+    {CV_AMD64_ECX,      "ECX",          (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_int32},
+    {CV_AMD64_EDX,      "EDX",          (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_int32},
+    {CV_AMD64_ESP,      "ESP",          (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_int32},
+    {CV_AMD64_EBP,      "EBP",          (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_int32},
+    {CV_AMD64_ESI,      "ESI",          (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_int32},
+    {CV_AMD64_EDI,      "EDI",          (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_int32},
+    {CV_AMD64_ES,       "ES",           (void*)FIELD_OFFSET(CONTEXT, SegEs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_CS,       "CS",           (void*)FIELD_OFFSET(CONTEXT, SegCs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_SS,       "SS",           (void*)FIELD_OFFSET(CONTEXT, SegSs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_DS,       "DS",           (void*)FIELD_OFFSET(CONTEXT, SegDs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_FS,       "FS",           (void*)FIELD_OFFSET(CONTEXT, SegFs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_GS,       "GS",           (void*)FIELD_OFFSET(CONTEXT, SegGs),   dbg_itype_unsigned_int16},
+    {CV_AMD64_FLAGS,    "FLAGS",        (void*)FIELD_OFFSET(CONTEXT, EFlags),  dbg_itype_unsigned_int16},
+    {CV_AMD64_EFLAGS,   "EFLAGS",       (void*)FIELD_OFFSET(CONTEXT, EFlags),  dbg_itype_unsigned_int32},
+    {CV_AMD64_RIP,      "RIP",          (void*)FIELD_OFFSET(CONTEXT, Rip),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RAX,      "RAX",          (void*)FIELD_OFFSET(CONTEXT, Rax),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RBX,      "RBX",          (void*)FIELD_OFFSET(CONTEXT, Rbx),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RCX,      "RCX",          (void*)FIELD_OFFSET(CONTEXT, Rcx),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RDX,      "RDX",          (void*)FIELD_OFFSET(CONTEXT, Rdx),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RSP,      "RSP",          (void*)FIELD_OFFSET(CONTEXT, Rsp),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RBP,      "RBP",          (void*)FIELD_OFFSET(CONTEXT, Rbp),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RSI,      "RSI",          (void*)FIELD_OFFSET(CONTEXT, Rsi),     dbg_itype_unsigned_int64},
+    {CV_AMD64_RDI,      "RDI",          (void*)FIELD_OFFSET(CONTEXT, Rdi),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R8,       "R8",           (void*)FIELD_OFFSET(CONTEXT, R8),      dbg_itype_unsigned_int64},
+    {CV_AMD64_R9,       "R9",           (void*)FIELD_OFFSET(CONTEXT, R9),      dbg_itype_unsigned_int64},
+    {CV_AMD64_R10,      "R10",          (void*)FIELD_OFFSET(CONTEXT, R10),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R11,      "R11",          (void*)FIELD_OFFSET(CONTEXT, R11),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R12,      "R12",          (void*)FIELD_OFFSET(CONTEXT, R12),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R13,      "R13",          (void*)FIELD_OFFSET(CONTEXT, R13),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R14,      "R14",          (void*)FIELD_OFFSET(CONTEXT, R14),     dbg_itype_unsigned_int64},
+    {CV_AMD64_R15,      "R15",          (void*)FIELD_OFFSET(CONTEXT, R15),     dbg_itype_unsigned_int64},
     {CV_AMD64_ST0,      "ST0",          (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[0]), dbg_itype_long_real},
     {CV_AMD64_ST0+1,    "ST1",          (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[1]), dbg_itype_long_real},
     {CV_AMD64_ST0+2,    "ST2",          (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[2]), dbg_itype_long_real},
diff --git a/programs/winedbg/dbg.y b/programs/winedbg/dbg.y
index ad21e3b81c5..1ce46bee0f8 100644
--- a/programs/winedbg/dbg.y
+++ b/programs/winedbg/dbg.y
@@ -306,23 +306,23 @@ noprocess_state:
 
 type_expr:
       tCHAR			{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_char; }
-    | tINT			{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int; }
-    | tLONG tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_long_int; }
-    | tLONG     		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_long_int; }
-    | tUNSIGNED tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int; }
-    | tUNSIGNED 		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int; }
-    | tLONG tUNSIGNED tINT	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_long_int; }
-    | tLONG tUNSIGNED   	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_long_int; }
-    | tSHORT tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_short_int; }
-    | tSHORT    		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_short_int; }
-    | tSHORT tUNSIGNED tINT	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_short_int; }
-    | tSHORT tUNSIGNED  	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_short_int; }
-    | tSIGNED tCHAR		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_char_int; }
-    | tUNSIGNED tCHAR		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_char_int; }
-    | tLONG tLONG tUNSIGNED tINT{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_longlong_int; }
-    | tLONG tLONG tUNSIGNED     { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_longlong_int; }
-    | tLONG tLONG tINT          { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_longlong_int; }
-    | tLONG tLONG               { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_longlong_int; }
+    | tINT			{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int32; }
+    | tLONG tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = ADDRSIZE == 4 ? dbg_itype_signed_long32 : dbg_itype_signed_long64; }
+    | tLONG     		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = ADDRSIZE == 4 ? dbg_itype_signed_long32 : dbg_itype_signed_long64; }
+    | tUNSIGNED tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int32; }
+    | tUNSIGNED 		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int32; }
+    | tLONG tUNSIGNED tINT	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = ADDRSIZE == 4 ? dbg_itype_unsigned_long32 : dbg_itype_unsigned_long64; }
+    | tLONG tUNSIGNED   	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = ADDRSIZE == 4 ? dbg_itype_unsigned_long32 : dbg_itype_unsigned_long64; }
+    | tSHORT tINT		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int16; }
+    | tSHORT    		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int16; }
+    | tSHORT tUNSIGNED tINT	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int16; }
+    | tSHORT tUNSIGNED  	{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int16; }
+    | tSIGNED tCHAR		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int8; }
+    | tUNSIGNED tCHAR		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int8; }
+    | tLONG tLONG tUNSIGNED tINT{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int64; }
+    | tLONG tLONG tUNSIGNED     { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_unsigned_int64; }
+    | tLONG tLONG tINT          { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int64; }
+    | tLONG tLONG               { $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_signed_int64; }
     | tFLOAT			{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_short_real; }
     | tDOUBLE			{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_real; }
     | tLONG tDOUBLE		{ $$.type = type_expr_type_id; $$.deref_count = 0; $$.u.type.module = 0; $$.u.type.id = dbg_itype_long_real; }
diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h
index ac13a28e3ca..f8f65035d48 100644
--- a/programs/winedbg/debugger.h
+++ b/programs/winedbg/debugger.h
@@ -68,23 +68,29 @@ enum dbg_line_status
 enum dbg_internal_types
 {
     dbg_itype_first             = 0xffffff00,
-    dbg_itype_unsigned_int,
-    dbg_itype_signed_int,
-    dbg_itype_signed_char_int,
-    dbg_itype_unsigned_char_int,
-    dbg_itype_unsigned_short_int,
-    dbg_itype_signed_short_int,
-    dbg_itype_unsigned_long_int,
-    dbg_itype_signed_long_int,
-    dbg_itype_unsigned_longlong_int,
-    dbg_itype_signed_longlong_int,
+    dbg_itype_char,
+    dbg_itype_wchar,
+
+    dbg_itype_unsigned_int8,
+    dbg_itype_signed_int8,
+    dbg_itype_unsigned_int16,
+    dbg_itype_signed_int16,
+    dbg_itype_unsigned_int32,
+    dbg_itype_signed_int32,
+    dbg_itype_unsigned_int64,
+    dbg_itype_signed_int64,
+    dbg_itype_unsigned_int128,
+    dbg_itype_signed_int128,
+
+    dbg_itype_unsigned_long32,
+    dbg_itype_signed_long32,
+    dbg_itype_unsigned_long64,
+    dbg_itype_signed_long64,
 
     /* they represent the dbg_lg(u)int_t types */
     dbg_itype_lgint,
     dbg_itype_lguint,
 
-    dbg_itype_char,
-    dbg_itype_wchar,
     dbg_itype_short_real, /* aka float */
     dbg_itype_real,       /* aka double */
     dbg_itype_long_real,  /* aka long double */
diff --git a/programs/winedbg/intvar.h b/programs/winedbg/intvar.h
index 4d1a80d095f..db117c96561 100644
--- a/programs/winedbg/intvar.h
+++ b/programs/winedbg/intvar.h
@@ -20,22 +20,22 @@
  */
 
    /* break handling */
-INTERNAL_VAR(BreakAllThreadsStartup,	FALSE,		NULL,  			dbg_itype_unsigned_int)
-INTERNAL_VAR(BreakOnCritSectTimeOut,    FALSE,          NULL,  			dbg_itype_unsigned_int)
-INTERNAL_VAR(BreakOnAttach,		FALSE,		NULL,			dbg_itype_unsigned_int)
-INTERNAL_VAR(BreakOnFirstChance,	FALSE,		NULL,			dbg_itype_unsigned_int)
-INTERNAL_VAR(BreakOnDllLoad,		FALSE, 		NULL, 			dbg_itype_unsigned_int)
-INTERNAL_VAR(CanDeferOnBPByAddr,        FALSE,          NULL,                   dbg_itype_unsigned_int)
+INTERNAL_VAR(BreakAllThreadsStartup,    FALSE,  NULL,           dbg_itype_unsigned_int32)
+INTERNAL_VAR(BreakOnCritSectTimeOut,    FALSE,  NULL,           dbg_itype_unsigned_int32)
+INTERNAL_VAR(BreakOnAttach,             FALSE,  NULL,           dbg_itype_unsigned_int32)
+INTERNAL_VAR(BreakOnFirstChance,        FALSE,  NULL,           dbg_itype_unsigned_int32)
+INTERNAL_VAR(BreakOnDllLoad,            FALSE,  NULL,           dbg_itype_unsigned_int32)
+INTERNAL_VAR(CanDeferOnBPByAddr,        FALSE,  NULL,           dbg_itype_unsigned_int32)
 
    /* current process/thread */
-INTERNAL_VAR(ThreadId,			FALSE,		&dbg_curr_tid,		dbg_itype_unsigned_int)
-INTERNAL_VAR(ProcessId,			FALSE,		&dbg_curr_pid,		dbg_itype_unsigned_int)
+INTERNAL_VAR(ThreadId,                  FALSE,  &dbg_curr_tid,  dbg_itype_unsigned_int32)
+INTERNAL_VAR(ProcessId,                 FALSE,  &dbg_curr_pid,  dbg_itype_unsigned_int32)
 
    /* symbol manipulation */
-INTERNAL_VAR(AlwaysShowThunks,          FALSE,          NULL,                   dbg_itype_unsigned_int)
+INTERNAL_VAR(AlwaysShowThunks,          FALSE,  NULL,           dbg_itype_unsigned_int32)
 
    /* process manipulation */
-INTERNAL_VAR(AlsoDebugProcChild,        FALSE,          NULL,                   dbg_itype_unsigned_int)
+INTERNAL_VAR(AlsoDebugProcChild,        FALSE,  NULL,           dbg_itype_unsigned_int32)
 
    /* automatic invocation on failure */
-INTERNAL_VAR(ShowCrashDialog,           TRUE,           NULL,                   dbg_itype_unsigned_int)
+INTERNAL_VAR(ShowCrashDialog,           TRUE,   NULL,           dbg_itype_unsigned_int32)
diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c
index ba246889a55..50932e14ddd 100644
--- a/programs/winedbg/stack.c
+++ b/programs/winedbg/stack.c
@@ -108,6 +108,7 @@ BOOL stack_get_register_frame(const struct dbg_internal_var* div, struct dbg_lva
     else
     {
         enum be_cpu_addr        kind;
+        DWORD                   itype = ADDRSIZE == 4 ? dbg_itype_unsigned_long32 : dbg_itype_unsigned_long64;
 
         if (!dbg_curr_process->be_cpu->get_register_info(div->val, &kind)) return FALSE;
 
@@ -115,13 +116,13 @@ BOOL stack_get_register_frame(const struct dbg_internal_var* div, struct dbg_lva
         switch (kind)
         {
         case be_cpu_addr_pc:
-            init_lvalue_in_debugger(lvalue, dbg_itype_unsigned_long_int, &currfrm->linear_pc);
+            init_lvalue_in_debugger(lvalue, itype, &currfrm->linear_pc);
             break;
         case be_cpu_addr_stack:
-            init_lvalue_in_debugger(lvalue, dbg_itype_unsigned_long_int, &currfrm->linear_stack);
+            init_lvalue_in_debugger(lvalue, itype, &currfrm->linear_stack);
             break;
         case be_cpu_addr_frame:
-            init_lvalue_in_debugger(lvalue, dbg_itype_unsigned_long_int, &currfrm->linear_frame);
+            init_lvalue_in_debugger(lvalue, itype, &currfrm->linear_frame);
             break;
         }
     }
diff --git a/programs/winedbg/types.c b/programs/winedbg/types.c
index 0abd2320570..e87af4c3211 100644
--- a/programs/winedbg/types.c
+++ b/programs/winedbg/types.c
@@ -894,76 +894,130 @@ BOOL types_get_info(const struct dbg_type* type, IMAGEHLP_SYMBOL_TYPE_INFO ti, v
         default: WINE_FIXME("unsupported %u for lgint_t\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_unsigned_long_int:
+    case dbg_itype_unsigned_long32:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = ADDRSIZE; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
         default: WINE_FIXME("unsupported %u for u-long int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_signed_long_int:
+    case dbg_itype_signed_long32:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = ADDRSIZE; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
         default: WINE_FIXME("unsupported %u for s-long int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_unsigned_int:
+    case dbg_itype_unsigned_long64:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 8; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
+        default: WINE_FIXME("unsupported %u for u-long int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_signed_long64:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 8; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
+        default: WINE_FIXME("unsupported %u for s-long int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_unsigned_int8:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 1; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
         default: WINE_FIXME("unsupported %u for u-int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_signed_int:
+    case dbg_itype_signed_int8:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 1; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
         default: WINE_FIXME("unsupported %u for s-int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_unsigned_short_int:
+    case dbg_itype_unsigned_int16:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
         case TI_GET_LENGTH:     X(DWORD64) = 2; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
-        default: WINE_FIXME("unsupported %u for u-short int\n", ti); return FALSE;
+        default: WINE_FIXME("unsupported %u for u-int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_signed_short_int:
+    case dbg_itype_signed_int16:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
         case TI_GET_LENGTH:     X(DWORD64) = 2; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
-        default: WINE_FIXME("unsupported %u for s-short int\n", ti); return FALSE;
+        default: WINE_FIXME("unsupported %u for s-int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_unsigned_char_int:
+    case dbg_itype_unsigned_int32:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = 1; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
-        default: WINE_FIXME("unsupported %u for u-char int\n", ti); return FALSE;
+        default: WINE_FIXME("unsupported %u for u-int\n", ti); return FALSE;
         }
         break;
-    case dbg_itype_signed_char_int:
+    case dbg_itype_signed_int32:
         switch (ti)
         {
         case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
-        case TI_GET_LENGTH:     X(DWORD64) = 1; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 4; break;
         case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
-        default: WINE_FIXME("unsupported %u for s-char int\n", ti); return FALSE;
+        default: WINE_FIXME("unsupported %u for s-int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_unsigned_int64:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 8; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
+        default: WINE_FIXME("unsupported %u for u-int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_signed_int64:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 8; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
+        default: WINE_FIXME("unsupported %u for s-int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_unsigned_int128:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 16; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btUInt; break;
+        default: WINE_FIXME("unsupported %u for u-int\n", ti); return FALSE;
+        }
+        break;
+    case dbg_itype_signed_int128:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 16; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btInt; break;
+        default: WINE_FIXME("unsupported %u for s-int\n", ti); return FALSE;
         }
         break;
     case dbg_itype_char:
@@ -975,6 +1029,15 @@ BOOL types_get_info(const struct dbg_type* type, IMAGEHLP_SYMBOL_TYPE_INFO ti, v
         default: WINE_FIXME("unsupported %u for char int\n", ti); return FALSE;
         }
         break;
+    case dbg_itype_wchar:
+        switch (ti)
+        {
+        case TI_GET_SYMTAG:     X(DWORD)   = SymTagBaseType; break;
+        case TI_GET_LENGTH:     X(DWORD64) = 2; break;
+        case TI_GET_BASETYPE:   X(DWORD)   = btWChar; break;
+        default: WINE_FIXME("unsupported %u for char int\n", ti); return FALSE;
+        }
+        break;
     case dbg_itype_astring:
         switch (ti)
         {
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/104



More information about the wine-devel mailing list