Release 961222
Sun Dec 22 13:30:18 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [graphics/metafiledrv/init.c] [graphisc/metafiledrv/mapping.c]
Added mapping functions.
* [if1632/gdi.spec] [objects/*.c] [include/windows.h]
Added a lot of Win32 functions.
* [memory/heap.c]
Added HEAP_strdupAtoW and HEAP_strdupWtoA.
* [misc/lstr.c] [memory/string.c]
Moved OEM<->Ansi conversion to string.c. Fixed a couple of bugs.
* [object/font.c]
Avoid uppercasing font names.
* [windows/hook.c]
Set ds = ss before calling hook procedure.
Sat Dec 21 21:44:17 1996 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [objects/color.c]
Use colors allocated by other clients.
* [windows/caret.c]
Set default blink time to 500.
* [windows/win.c] [windows/event.c]
Delete X context before XDestroyWindow().
* [windows/keyboard.c]
Fixed GetKeyState() once more.
Fri Dec 20 08:26:33 1996 Eric Youngdale <eric@sub2304.jic.com>
* [debugger/*.c]
Lots of built-in debugger improvements: parse Win32 EXEs debug
information, display local variables, source files and line
numbers, get symbols directly from the Wine executable, etc.
Tue Dec 17 22:39:42 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
* [misc/winsock_async.c]
Extern declaration added for h_errno.
Tue Dec 17 21:29:34 1996 Albrecht Kleine <kleine@ak.sax.de>
* [windows/message.c]
Added two more CBT hook calls: HCBT_CLICKSKIPPED/HCBT_KEYSKIPPED.
diff --git a/debugger/info.c b/debugger/info.c
index 57d8d27..2abc981 100644
--- a/debugger/info.c
+++ b/debugger/info.c
@@ -76,14 +76,38 @@
*
* Print an 16- or 32-bit address, with the nearest symbol if any.
*/
-void DEBUG_PrintAddress( const DBG_ADDR *addr, int addrlen )
+struct name_hash *
+DEBUG_PrintAddress( const DBG_ADDR *addr, int addrlen, int flag )
{
- const char *name = DEBUG_FindNearestSymbol( addr );
+ struct name_hash * nh;
+ const char *name = DEBUG_FindNearestSymbol( addr, flag, &nh, 0 );
if (addr->seg) fprintf( stderr, "0x%04lx:", addr->seg );
if (addrlen == 16) fprintf( stderr, "0x%04lx", addr->off );
else fprintf( stderr, "0x%08lx", addr->off );
if (name) fprintf( stderr, " (%s)", name );
+ return nh;
+}
+/***********************************************************************
+ * DEBUG_PrintAddressAndArgs
+ *
+ * Print an 16- or 32-bit address, with the nearest symbol if any.
+ * Similar to DEBUG_PrintAddress, but we print the arguments to
+ * each function (if known). This is useful in a backtrace.
+ */
+struct name_hash *
+DEBUG_PrintAddressAndArgs( const DBG_ADDR *addr, int addrlen,
+ unsigned int ebp, int flag )
+{
+ struct name_hash * nh;
+ const char *name = DEBUG_FindNearestSymbol( addr, flag, &nh, ebp );
+
+ if (addr->seg) fprintf( stderr, "0x%04lx:", addr->seg );
+ if (addrlen == 16) fprintf( stderr, "0x%04lx", addr->off );
+ else fprintf( stderr, "0x%08lx", addr->off );
+ if (name) fprintf( stderr, " (%s)", name );
+
+ return nh;
}
@@ -100,19 +124,20 @@
"The commands accepted by the Wine debugger are a small subset",
"of the commands that gdb would accept.",
"The commands currently are:",
-" break [*<addr>] delete break bpnum",
-" disable bpnum enable bpnum",
-" help quit",
-" bt cont",
-" step next",
-" x <addr> print <expr>",
-" set <reg> = <expr> set *<addr> = <expr>",
-" symbolfile <filename> define <identifier> <addr>",
-" list <addr>\n",
+" break [*<addr>] delete break bpnum",
+" disable bpnum enable bpnum",
+" help quit",
+" bt cont",
+" step next",
+" x <addr> print <expr>",
+" set <reg> = <expr> set *<addr> = <expr>",
+" symbolfile <filename> define <identifier> <addr>",
+" up down\n",
+" list <addr> frame <n>\n",
"Wine-specific commands:",
-" mode [16,32] walk [wnd,class,queue] <handle>",
-" info [reg,stack,break,segments] info [wnd, queue] <handle>\n",
+" mode [16,32] walk [wnd,class,queue] <handle>",
+" info [reg,stack,break,segments,locals] info [wnd, queue] <handle>\n",
"The 'x' command accepts repeat counts and formats (including 'i') in the",
"same way that gdb does.\n",
@@ -144,7 +169,7 @@
DBG_FIX_ADDR_SEG( addr, CS_reg(DEBUG_context) );
while (count-- > 0)
{
- DEBUG_PrintAddress( addr, dbg_mode );
+ DEBUG_PrintAddress( addr, dbg_mode, FALSE );
fprintf( stderr, ": " );
if (!DBG_CHECK_READ_PTR( addr, 1 )) return;
DEBUG_Disasm( addr );