Module: wine Branch: master Commit: 5aa859de721329bb7783b9710e8d192c72f181a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5aa859de721329bb7783b9710e...
Author: Eric Pouech eric.pouech@orange.fr Date: Mon Dec 14 22:05:27 2009 +0100
winedbg: Allow internal (host) integral variables to hold 64bit value on 64bit platforms.
---
programs/winedbg/debugger.h | 4 ++-- programs/winedbg/expr.c | 16 ++++++++-------- programs/winedbg/types.c | 20 +++++++++++++++++++- 3 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h index e48dbd3..300f48a 100644 --- a/programs/winedbg/debugger.h +++ b/programs/winedbg/debugger.h @@ -328,8 +328,8 @@ extern int display_enable(int displaynum, int enable); extern void expr_free_all(void); extern struct expr* expr_alloc_internal_var(const char* name); extern struct expr* expr_alloc_symbol(const char* name); -extern struct expr* expr_alloc_sconstant(int val); -extern struct expr* expr_alloc_uconstant(unsigned val); +extern struct expr* expr_alloc_sconstant(long int val); +extern struct expr* expr_alloc_uconstant(long unsigned val); extern struct expr* expr_alloc_string(const char* str); extern struct expr* expr_alloc_binary_op(int oper, struct expr*, struct expr*); extern struct expr* expr_alloc_unary_op(int oper, struct expr*); diff --git a/programs/winedbg/expr.c b/programs/winedbg/expr.c index 3d5cef1..6b8c46f 100644 --- a/programs/winedbg/expr.c +++ b/programs/winedbg/expr.c @@ -37,12 +37,12 @@ struct expr { struct { - int value; + long int value; } s_const;
struct { - unsigned int value; + long unsigned int value; } u_const;
struct @@ -165,7 +165,7 @@ struct expr* expr_alloc_symbol(const char* name) return ex; }
-struct expr* expr_alloc_sconstant(int value) +struct expr* expr_alloc_sconstant(long int value) { struct expr* ex;
@@ -176,7 +176,7 @@ struct expr* expr_alloc_sconstant(int value) return ex; }
-struct expr* expr_alloc_uconstant(unsigned int value) +struct expr* expr_alloc_uconstant(long unsigned int value) { struct expr* ex;
@@ -350,13 +350,13 @@ struct dbg_lvalue expr_eval(struct expr* exp) break; case EXPR_TYPE_U_CONST: rtn.cookie = DLV_HOST; - rtn.type.id = dbg_itype_unsigned_int; + rtn.type.id = dbg_itype_unsigned_long_int; rtn.type.module = 0; rtn.addr.Offset = (ULONG_PTR)&exp->un.u_const.value; break; case EXPR_TYPE_S_CONST: rtn.cookie = DLV_HOST; - rtn.type.id = dbg_itype_signed_int; + rtn.type.id = dbg_itype_signed_long_int; rtn.type.module = 0; rtn.addr.Offset = (ULONG_PTR)&exp->un.s_const.value; break; @@ -690,10 +690,10 @@ int expr_print(const struct expr* exp) dbg_printf("$%s", exp->un.intvar.name); break; case EXPR_TYPE_U_CONST: - dbg_printf("%u", exp->un.u_const.value); + dbg_printf("%lu", exp->un.u_const.value); break; case EXPR_TYPE_S_CONST: - dbg_printf("%d", exp->un.s_const.value); + dbg_printf("%ld", exp->un.s_const.value); break; case EXPR_TYPE_STRING: dbg_printf(""%s"", exp->un.string.str); diff --git a/programs/winedbg/types.c b/programs/winedbg/types.c index 68bf12b..414bb9f 100644 --- a/programs/winedbg/types.c +++ b/programs/winedbg/types.c @@ -784,6 +784,24 @@ BOOL types_get_info(const struct dbg_type* type, IMAGEHLP_SYMBOL_TYPE_INFO ti, v
switch (type->id) { + case dbg_itype_unsigned_long_int: + switch (ti) + { + case TI_GET_SYMTAG: X(DWORD) = SymTagBaseType; break; + case TI_GET_LENGTH: X(DWORD64) = ADDRSIZE; 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: + switch (ti) + { + case TI_GET_SYMTAG: X(DWORD) = SymTagBaseType; break; + case TI_GET_LENGTH: X(DWORD64) = ADDRSIZE; 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: switch (ti) { @@ -851,7 +869,7 @@ BOOL types_get_info(const struct dbg_type* type, IMAGEHLP_SYMBOL_TYPE_INFO ti, v switch (ti) { case TI_GET_SYMTAG: X(DWORD) = SymTagPointerType; break; - case TI_GET_LENGTH: X(DWORD64) = 4; break; + case TI_GET_LENGTH: X(DWORD64) = ADDRSIZE; break; case TI_GET_TYPE: X(DWORD) = dbg_itype_char; break; default: WINE_FIXME("unsupported %u for a string\n", ti); return FALSE; }