winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
December 2009
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
3 participants
1233 discussions
Start a n
N
ew thread
Eric Pouech : winedbg: Implement breakpoint management for x86_64 targets.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 4195c2f3bb646a14d1730f83797a6b7646979a2b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4195c2f3bb646a14d1730f837…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:06:00 2009 +0100 winedbg: Implement breakpoint management for x86_64 targets. --- programs/winedbg/be_x86_64.c | 135 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 128 insertions(+), 7 deletions(-) diff --git a/programs/winedbg/be_x86_64.c b/programs/winedbg/be_x86_64.c index ed5cdf2..2f58c88 100644 --- a/programs/winedbg/be_x86_64.c +++ b/programs/winedbg/be_x86_64.c @@ -2,6 +2,7 @@ * Debugger x86_64 specific functions * * Copyright 2004 Vincent Béron + * Copyright 2009 Eric Pouech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,6 +20,9 @@ */ #include "debugger.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(winedbg); #if defined(__x86_64__) @@ -187,31 +191,148 @@ static void be_x86_64_disasm_one_insn(ADDRESS64* addr, int display) dbg_printf("Disasm NIY\n"); } +#define DR7_CONTROL_SHIFT 16 +#define DR7_CONTROL_SIZE 4 + +#define DR7_RW_EXECUTE (0x0) +#define DR7_RW_WRITE (0x1) +#define DR7_RW_READ (0x3) + +#define DR7_LEN_1 (0x0) +#define DR7_LEN_2 (0x4) +#define DR7_LEN_4 (0xC) + +#define DR7_LOCAL_ENABLE_SHIFT 0 +#define DR7_GLOBAL_ENABLE_SHIFT 1 +#define DR7_ENABLE_SIZE 2 + +#define DR7_LOCAL_ENABLE_MASK (0x55) +#define DR7_GLOBAL_ENABLE_MASK (0xAA) + +#define DR7_CONTROL_RESERVED (0xFC00) +#define DR7_LOCAL_SLOWDOWN (0x100) +#define DR7_GLOBAL_SLOWDOWN (0x200) + +#define DR7_ENABLE_MASK(dr) (1<<(DR7_LOCAL_ENABLE_SHIFT+DR7_ENABLE_SIZE*(dr))) +#define IS_DR7_SET(ctrl,dr) ((ctrl)&DR7_ENABLE_MASK(dr)) + +static inline int be_x86_64_get_unused_DR(CONTEXT* ctx, DWORD64** r) +{ + if (!IS_DR7_SET(ctx->Dr7, 0)) + { + *r = &ctx->Dr0; + return 0; + } + if (!IS_DR7_SET(ctx->Dr7, 1)) + { + *r = &ctx->Dr1; + return 1; + } + if (!IS_DR7_SET(ctx->Dr7, 2)) + { + *r = &ctx->Dr2; + return 2; + } + if (!IS_DR7_SET(ctx->Dr7, 3)) + { + *r = &ctx->Dr3; + return 3; + } + dbg_printf("All hardware registers have been used\n"); + + return -1; +} + static unsigned be_x86_64_insert_Xpoint(HANDLE hProcess, const struct be_process_io* pio, CONTEXT* ctx, enum be_xpoint_type type, void* addr, unsigned long* val, unsigned size) { - dbg_printf("not done insert_Xpoint\n"); - return 0; + unsigned char ch; + SIZE_T sz; + DWORD64 *pr; + int reg; + unsigned long bits; + + switch (type) + { + case be_xpoint_break: + if (size != 0) return 0; + if (!pio->read(hProcess, addr, &ch, 1, &sz) || sz != 1) return 0; + *val = ch; + ch = 0xcc; + if (!pio->write(hProcess, addr, &ch, 1, &sz) || sz != 1) return 0; + break; + case be_xpoint_watch_exec: + bits = DR7_RW_EXECUTE; + goto hw_bp; + case be_xpoint_watch_read: + bits = DR7_RW_READ; + goto hw_bp; + case be_xpoint_watch_write: + bits = DR7_RW_WRITE; + hw_bp: + if ((reg = be_x86_64_get_unused_DR(ctx, &pr)) == -1) return 0; + *pr = (DWORD64)addr; + if (type != be_xpoint_watch_exec) switch (size) + { + case 4: bits |= DR7_LEN_4; break; + case 2: bits |= DR7_LEN_2; break; + case 1: bits |= DR7_LEN_1; break; + default: return 0; + } + *val = reg; + /* clear old values */ + ctx->Dr7 &= ~(0x0F << (DR7_CONTROL_SHIFT + DR7_CONTROL_SIZE * reg)); + /* set the correct ones */ + ctx->Dr7 |= bits << (DR7_CONTROL_SHIFT + DR7_CONTROL_SIZE * reg); + ctx->Dr7 |= DR7_ENABLE_MASK(reg) | DR7_LOCAL_SLOWDOWN; + break; + default: + dbg_printf("Unknown bp type %c\n", type); + return 0; + } + return 1; } static unsigned be_x86_64_remove_Xpoint(HANDLE hProcess, const struct be_process_io* pio, CONTEXT* ctx, enum be_xpoint_type type, void* addr, unsigned long val, unsigned size) { - dbg_printf("not done remove_Xpoint\n"); - return FALSE; + SIZE_T sz; + unsigned char ch; + + switch (type) + { + case be_xpoint_break: + if (size != 0) return 0; + if (!pio->read(hProcess, addr, &ch, 1, &sz) || sz != 1) return 0; + if (ch != (unsigned char)0xCC) + WINE_FIXME("Cannot get back %02x instead of 0xCC at %08lx\n", + ch, (unsigned long)addr); + ch = (unsigned char)val; + if (!pio->write(hProcess, addr, &ch, 1, &sz) || sz != 1) return 0; + break; + case be_xpoint_watch_exec: + case be_xpoint_watch_read: + case be_xpoint_watch_write: + /* simply disable the entry */ + ctx->Dr7 &= ~DR7_ENABLE_MASK(val); + break; + default: + dbg_printf("Unknown bp type %c\n", type); + return 0; + } + return 1; } static unsigned be_x86_64_is_watchpoint_set(const CONTEXT* ctx, unsigned idx) { - dbg_printf("not done is_watchpoint_set\n"); - return FALSE; + return ctx->Dr6 & (1 << idx); } static void be_x86_64_clear_watchpoint(CONTEXT* ctx, unsigned idx) { - dbg_printf("not done clear_watchpoint\n"); + ctx->Dr6 &= ~(1 << idx); } static int be_x86_64_adjust_pc_for_break(CONTEXT* ctx, BOOL way)
1
0
0
0
Eric Pouech : dbghelp: Rewrite the symt* <=> index wrappers to that they work on 64bit platforms.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 7b83b70b06ce6453cf3dc1d81d2af5264ea66a36 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=7b83b70b06ce6453cf3dc1d81…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:05:54 2009 +0100 dbghelp: Rewrite the symt* <=> index wrappers to that they work on 64bit platforms. --- dlls/dbghelp/dbghelp_private.h | 13 +++---------- dlls/dbghelp/module.c | 2 ++ dlls/dbghelp/symbol.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index bb5b990..a0b40a1 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -335,6 +335,7 @@ struct module struct pool pool; /* symbols & symbol tables */ + struct vector vsymt; int sortlist_valid; unsigned num_sorttab; /* number of symbols with addresses */ unsigned num_symbols; @@ -418,16 +419,6 @@ struct pdb_lookup } u; }; -static inline DWORD symt_ptr2index(struct module* module, const struct symt* sym) -{ - return (DWORD)sym; -} - -static inline struct symt* symt_index2ptr(struct module* module, DWORD id) -{ - return (struct symt*)id; -} - /* dbghelp.c */ extern struct process* process_find_by_handle(HANDLE hProcess); extern HANDLE hMsvcrt; @@ -614,6 +605,8 @@ extern struct symt_hierarchy_point* symt_new_label(struct module* module, struct symt_compiland* compiland, const char* name, unsigned long address); +extern struct symt* symt_index2ptr(struct module* module, DWORD id); +extern DWORD symt_ptr2index(struct module* module, const struct symt* sym); /* type.c */ extern void symt_init_basic(struct module* module); diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index 55eca44..53f56c2 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -173,6 +173,8 @@ struct module* module_new(struct process* pcs, const WCHAR* name, module->addr_sorttab = NULL; module->num_sorttab = 0; module->num_symbols = 0; + + vector_init(&module->vsymt, sizeof(struct symt*), 128); /* FIXME: this seems a bit too high (on a per module basis) * need some statistics about this */ diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 17fd6c7..ede588c 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -69,6 +69,37 @@ int symt_cmp_addr(const void* p1, const void* p2) return cmp_addr(a1, a2); } +DWORD symt_ptr2index(struct module* module, const struct symt* sym) +{ +#ifdef _WIN64 + const struct symt** c; + int len = vector_length(&module->vsymt), i; + + /* FIXME: this is inefficient */ + for (i = 0; i < len; i++) + { + if (*(struct symt**)vector_at(&module->vsymt, i) == sym) + return i + 1; + } + /* not found */ + c = vector_add(&module->vsymt, &module->pool); + if (c) *c = sym; + return len + 1; +#else + return (DWORD)sym; +#endif +} + +struct symt* symt_index2ptr(struct module* module, DWORD id) +{ +#ifdef _WIN64 + if (!id-- || id >= vector_length(&module->vsymt)) return NULL; + return *(struct symt**)vector_at(&module->vsymt, id); +#else + return (struct symt*)id; +#endif +} + static BOOL symt_grow_sorttab(struct module* module, unsigned sz) { struct symt_ht** new;
1
0
0
0
Eric Pouech : dbghelp: Wrap the symt* <=> index transformations.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 92b9b0940dc3ecd02b00b6fbbac3e24d3d8a0115 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=92b9b0940dc3ecd02b00b6fbb…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:05:46 2009 +0100 dbghelp: Wrap the symt* <=> index transformations. --- dlls/dbghelp/coff.c | 5 ++- dlls/dbghelp/dbghelp_private.h | 13 +++++++- dlls/dbghelp/dwarf.c | 3 +- dlls/dbghelp/elf_module.c | 8 ++-- dlls/dbghelp/msc.c | 2 +- dlls/dbghelp/stabs.c | 2 +- dlls/dbghelp/symbol.c | 67 ++++++++++++++++++++++------------------ dlls/dbghelp/type.c | 58 +++++++++++++++++----------------- 8 files changed, 89 insertions(+), 69 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=92b9b0940dc3ecd02b00b…
1
0
0
0
Eric Pouech : dbghelp: Fix module on which GetTypeFromName is done.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 07c1a1ca51b651a4b1ba4e8e5476e403b0560959 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=07c1a1ca51b651a4b1ba4e8e5…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:05:40 2009 +0100 dbghelp: Fix module on which GetTypeFromName is done. --- dlls/dbghelp/type.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 3955815..b9f4a22 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -878,13 +878,13 @@ BOOL WINAPI SymGetTypeFromName(HANDLE hProcess, ULONG64 BaseOfDll, PCSTR Name, PSYMBOL_INFO Symbol) { struct process* pcs = process_find_by_handle(hProcess); - struct module* module; + struct module_pair pair; struct symt* type; if (!pcs) return FALSE; - module = module_find_by_addr(pcs, BaseOfDll, DMT_UNKNOWN); - if (!module) return FALSE; - type = symt_find_type_by_name(module, SymTagNull, Name); + pair.requested = module_find_by_addr(pcs, BaseOfDll, DMT_UNKNOWN); + if (!module_get_debug(&pair)) return FALSE; + type = symt_find_type_by_name(pair.effective, SymTagNull, Name); if (!type) return FALSE; Symbol->TypeIndex = (DWORD)type;
1
0
0
0
Eric Pouech : winedbg: Added 'a' to the format supported in examine command (a stands for address).
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: f96bdda0f332113f24233aca13549e9ec76911fe URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f96bdda0f332113f24233aca1…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:05:34 2009 +0100 winedbg: Added 'a' to the format supported in examine command (a stands for address). --- programs/winedbg/debug.l | 2 +- programs/winedbg/memory.c | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/programs/winedbg/debug.l b/programs/winedbg/debug.l index 9b1e4fa..2e87ddb 100644 --- a/programs/winedbg/debug.l +++ b/programs/winedbg/debug.l @@ -109,7 +109,7 @@ static int syntax_error; DIGIT [0-9] HEXDIGIT [0-9a-fA-F] -FORMAT [ubcdgiswx] +FORMAT [ubcdgiswxa] IDENTIFIER [_a-zA-Z~?][_a-zA-Z0-9~?@]* PATHNAME [\\/_a-zA-Z0-9\.~@][\\/\-_a-zA-Z0-9\.~@]* STRING \"[^\n"]+\" diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c index 2292ea6..e4f4729 100644 --- a/programs/winedbg/memory.c +++ b/programs/winedbg/memory.c @@ -216,15 +216,24 @@ void memory_examine(const struct dbg_lvalue *lvalue, int count, char format) } \ } \ dbg_printf("\n"); \ - } \ - return + } #define DO_DUMP(_t,_l,_f) DO_DUMP2(_t,_l,_f,_v) - case 'x': DO_DUMP(int, 4, " %8.8x"); - case 'd': DO_DUMP(unsigned int, 4, " %4.4d"); - case 'w': DO_DUMP(unsigned short, 8, " %04x"); - case 'c': DO_DUMP2(char, 32, " %c", (_v < 0x20) ? ' ' : _v); - case 'b': DO_DUMP2(char, 16, " %02x", (_v) & 0xff); + case 'x': DO_DUMP(int, 4, " %8.8x"); break; + case 'd': DO_DUMP(unsigned int, 4, " %4.4d"); break; + case 'w': DO_DUMP(unsigned short, 8, " %04x"); break; + case 'a': + if (sizeof(DWORD_PTR) == 4) + { + DO_DUMP(DWORD_PTR, 4, " %8.8lx"); + } + else + { + DO_DUMP(DWORD_PTR, 2, " %16.16lx"); + } + break; + case 'c': DO_DUMP2(char, 32, " %c", (_v < 0x20) ? ' ' : _v); break; + case 'b': DO_DUMP2(char, 16, " %02x", (_v) & 0xff); break; } }
1
0
0
0
Eric Pouech : winedbg: Allow internal (host) integral variables to hold 64bit value on 64bit platforms.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 5aa859de721329bb7783b9710e8d192c72f181a6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5aa859de721329bb7783b9710…
Author: Eric Pouech <eric.pouech(a)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; }
1
0
0
0
Eric Pouech : winedbg: Fix some types for homogenous support on 64bit platform.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 4ce6c90c361cc814aead4df81cf4061f9acfdad4 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4ce6c90c361cc814aead4df81…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Dec 14 22:05:16 2009 +0100 winedbg: Fix some types for homogenous support on 64bit platform. --- programs/winedbg/debugger.h | 2 +- programs/winedbg/stack.c | 2 +- programs/winedbg/symbol.c | 4 ++-- programs/winedbg/tgt_active.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h index 7e2559e..e48dbd3 100644 --- a/programs/winedbg/debugger.h +++ b/programs/winedbg/debugger.h @@ -397,7 +397,7 @@ extern void symbol_read_symtable(const char* filename, unsigned long extern enum dbg_line_status symbol_get_function_line_status(const ADDRESS64* addr); extern BOOL symbol_get_line(const char* filename, const char* func, IMAGEHLP_LINE64* ret); extern void symbol_info(const char* str); -extern void symbol_print_local(const SYMBOL_INFO* sym, ULONG_PTR base, BOOL detailed); +extern void symbol_print_local(const SYMBOL_INFO* sym, DWORD_PTR base, BOOL detailed); extern int symbol_info_locals(void); extern BOOL symbol_is_local(const char* name); struct sgv_data; diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c index 221ad34..c80e5c3 100644 --- a/programs/winedbg/stack.c +++ b/programs/winedbg/stack.c @@ -124,7 +124,7 @@ BOOL stack_set_frame(int newframe) ADDRESS64 addr; if (!stack_set_frame_internal(newframe)) return FALSE; addr.Mode = AddrModeFlat; - addr.Offset = (unsigned long)memory_to_linear_addr(&dbg_curr_thread->frames[dbg_curr_thread->curr_frame].addr_pc); + addr.Offset = (DWORD_PTR)memory_to_linear_addr(&dbg_curr_thread->frames[dbg_curr_thread->curr_frame].addr_pc); source_list_from_addr(&addr, 0); return TRUE; } diff --git a/programs/winedbg/symbol.c b/programs/winedbg/symbol.c index 35d1c5d..ca2feee 100644 --- a/programs/winedbg/symbol.c +++ b/programs/winedbg/symbol.c @@ -648,7 +648,7 @@ BOOL symbol_get_line(const char* filename, const char* name, * <name>=<value> (local|pmt <where>) in detailed form * Note <value> can be an error message in case of error */ -void symbol_print_local(const SYMBOL_INFO* sym, ULONG_PTR base, BOOL detailed) +void symbol_print_local(const SYMBOL_INFO* sym, DWORD_PTR base, BOOL detailed) { struct dbg_lvalue lvalue; char buffer[64]; @@ -682,7 +682,7 @@ static BOOL CALLBACK info_locals_cb(PSYMBOL_INFO sym, ULONG size, PVOID ctx) types_print_type(&type, FALSE); dbg_printf(" "); - symbol_print_local(sym, (ULONG_PTR)ctx, TRUE); + symbol_print_local(sym, (DWORD_PTR)ctx, TRUE); dbg_printf("\n"); return TRUE; diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c index 8d13667..232b2cc 100644 --- a/programs/winedbg/tgt_active.c +++ b/programs/winedbg/tgt_active.c @@ -616,8 +616,8 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de) break_set_xpoints(TRUE); if (DBG_IVAR(BreakOnDllLoad)) { - dbg_printf("Stopping on DLL %s loading at 0x%08lx\n", - dbg_W2A(u.buffer, -1), (unsigned long)de->u.LoadDll.lpBaseOfDll); + dbg_printf("Stopping on DLL %s loading at %p\n", + dbg_W2A(u.buffer, -1), de->u.LoadDll.lpBaseOfDll); if (dbg_fetch_context()) cont = 0; } break;
1
0
0
0
David Adam : d3dx9/tests: Check a relative error instead of an absolute error.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 3ff4d07c401d856fdf592603c211a43470deba50 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3ff4d07c401d856fdf592603c…
Author: David Adam <david.adam.cnrs(a)gmail.com> Date: Tue Dec 15 09:59:13 2009 +0100 d3dx9/tests: Check a relative error instead of an absolute error. --- dlls/d3dx9_36/tests/math.c | 107 ++++++++++++++++++++++---------------------- 1 files changed, 54 insertions(+), 53 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=3ff4d07c401d856fdf592…
1
0
0
0
Hans Leidekker : msi: Reject greater than and less than string comparisons in WHERE clauses.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: 6df6332198597aa0e03f9e15c9f4e8c883356f3b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6df6332198597aa0e03f9e15c…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Tue Dec 15 09:50:40 2009 +0100 msi: Reject greater than and less than string comparisons in WHERE clauses. --- dlls/msi/tests/db.c | 24 ++++++++++++++++++++++++ dlls/msi/where.c | 6 +----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index e44970d..c909f90 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1761,6 +1761,30 @@ static void test_where(void) ok( r == ERROR_SUCCESS, "query failed: %d\n", r ); MsiCloseHandle( rec ); + rec = 0; + query = "SELECT * FROM `Media` WHERE `DiskPrompt` < 'Cabinet'"; + r = do_query(hdb, query, &rec); + ok( r == ERROR_BAD_QUERY_SYNTAX, "query failed: %d\n", r ); + MsiCloseHandle( rec ); + + rec = 0; + query = "SELECT * FROM `Media` WHERE `DiskPrompt` > 'Cabinet'"; + r = do_query(hdb, query, &rec); + ok( r == ERROR_BAD_QUERY_SYNTAX, "query failed: %d\n", r ); + MsiCloseHandle( rec ); + + rec = 0; + query = "SELECT * FROM `Media` WHERE `DiskPrompt` <> 'Cabinet'"; + r = do_query(hdb, query, &rec); + todo_wine ok( r == ERROR_SUCCESS, "query failed: %d\n", r ); + MsiCloseHandle( rec ); + + rec = 0; + query = "SELECT * FROM `Media` WHERE `DiskPrompt` = 'Cabinet'"; + r = do_query(hdb, query, &rec); + ok( r == ERROR_NO_MORE_ITEMS, "query failed: %d\n", r ); + MsiCloseHandle( rec ); + rec = MsiCreateRecord(1); MsiRecordSetString(rec, 1, ""); diff --git a/dlls/msi/where.c b/dlls/msi/where.c index 32f71b9..545d6a8 100644 --- a/dlls/msi/where.c +++ b/dlls/msi/where.c @@ -309,9 +309,7 @@ static UINT STRCMP_Evaluate( MSIWHEREVIEW *wv, UINT row, const struct expr *cond sr = lstrcmpW( l_str, r_str ); *val = ( cond->u.expr.op == OP_EQ && ( sr == 0 ) ) || - ( cond->u.expr.op == OP_NE && ( sr != 0 ) ) || - ( cond->u.expr.op == OP_LT && ( sr < 0 ) ) || - ( cond->u.expr.op == OP_GT && ( sr > 0 ) ); + ( cond->u.expr.op == OP_NE && ( sr != 0 ) ); return ERROR_SUCCESS; } @@ -644,8 +642,6 @@ static UINT WHERE_VerifyCondition( MSIDATABASE *db, MSIVIEW *table, struct expr switch( cond->u.expr.op ) { case OP_EQ: - case OP_GT: - case OP_LT: case OP_NE: break; default:
1
0
0
0
Hans Leidekker : rpcrt4: Avoid test failures on win9x.
by Alexandre Julliard
15 Dec '09
15 Dec '09
Module: wine Branch: master Commit: d95e58ba4debf07f2b7d1fd88737fbfc5a185628 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d95e58ba4debf07f2b7d1fd88…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Tue Dec 15 09:50:10 2009 +0100 rpcrt4: Avoid test failures on win9x. --- dlls/rpcrt4/tests/server.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c index a871583..353d0cd 100644 --- a/dlls/rpcrt4/tests/server.c +++ b/dlls/rpcrt4/tests/server.c @@ -1337,11 +1337,6 @@ s_authinfo_test(unsigned int protseq, int secure) if (secure || protseq == RPC_PROTSEQ_LRPC) { - status = RpcImpersonateClient(NULL); - ok(status == RPC_S_OK, "expected RPC_S_OK got %u\n", status); - status = RpcRevertToSelf(); - ok(status == RPC_S_OK, "expected RPC_S_OK got %u\n", status); - status = RpcBindingInqAuthClientA(binding, &privs, &principal, &level, &authnsvc, NULL); ok(status == RPC_S_OK, "expected RPC_S_OK got %u\n", status); ok(privs != (RPC_AUTHZ_HANDLE)0xdeadbeef, "privs unchanged\n"); @@ -1365,6 +1360,17 @@ s_authinfo_test(unsigned int protseq, int secure) } ok(level == RPC_C_AUTHN_LEVEL_PKT_PRIVACY, "level unchanged\n"); ok(authnsvc == RPC_C_AUTHN_WINNT, "authnsvc unchanged\n"); + + status = RpcImpersonateClient(NULL); + if (status == RPC_S_CANNOT_SUPPORT) + { + win_skip("RpcImpersonateClient not supported\n"); + return; + } + ok(status == RPC_S_OK, "expected RPC_S_OK got %u\n", status); + status = RpcRevertToSelf(); + ok(status == RPC_S_OK, "expected RPC_S_OK got %u\n", status); + } else {
1
0
0
0
← Newer
1
...
54
55
56
57
58
59
60
...
124
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Results per page:
10
25
50
100
200