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 );