b6646b3
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205551
b6646b3
b6646b3
b6646b3
2006-09-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
b6646b3
b6646b3
	* printcmd.c (printf_command): Handle forgotten "%p".
b6646b3
b6646b3
2006-09-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
b6646b3
b6646b3
	* gdb.base/display.exp: New test of `printf' "%p" formatting.
b6646b3
b6646b3
b6646b3
diff -u -r sources-clean/gdb/printcmd.c sources-custom/gdb/printcmd.c
b6646b3
--- sources-clean/gdb/printcmd.c	2006-07-29 20:29:26.000000000 +0200
b6646b3
+++ sources-custom/gdb/printcmd.c	2006-09-12 16:18:55.000000000 +0200
b6646b3
@@ -43,6 +43,9 @@
b6646b3
 #include "gdb_assert.h"
b6646b3
 #include "block.h"
b6646b3
 #include "disasm.h"
b6646b3
+#ifdef HAVE_STDINT_H
b6646b3
+#include <stdint.h>
b6646b3
+#endif
b6646b3
 
b6646b3
 #ifdef TUI
b6646b3
 #include "tui/tui.h"		/* For tui_active et.al.   */
b6646b3
@@ -2065,6 +2068,16 @@
b6646b3
 #else
b6646b3
 	    error (_("long long not supported in printf"));
b6646b3
 #endif
b6646b3
+	  case ptr_arg:
b6646b3
+#ifdef HAVE_UINTPTR_T
b6646b3
+	    {
b6646b3
+	      void *val = (void *) (uintptr_t) value_as_address (val_args[i]);
b6646b3
+	      printf_filtered (current_substring, val);
b6646b3
+	      break;
b6646b3
+	    }
b6646b3
+#else
b6646b3
+	    error (_("pointer not supported in printf"));
b6646b3
+#endif
b6646b3
 	  case int_arg:
b6646b3
 	    {
b6646b3
 	      int val = value_as_long (val_args[i]);
b6646b3
diff -u -r sources-clean/gdb/testsuite/gdb.base/display.exp sources-custom/gdb/testsuite/gdb.base/display.exp
b6646b3
--- sources-clean/gdb/testsuite/gdb.base/display.exp	2006-08-13 02:53:36.000000000 +0200
b6646b3
+++ sources-custom/gdb/testsuite/gdb.base/display.exp	2006-09-12 16:17:24.000000000 +0200
b6646b3
@@ -179,6 +179,8 @@
b6646b3
 gdb_test "printf \"\"" ".*" "re-set term"
b6646b3
 gdb_test "printf \"\\w\"" ".*Unrecognized escape character.*"
b6646b3
 gdb_test "printf \"%d\" j" ".*Invalid argument syntax.*"
b6646b3
+# 0 or hex vs. dec printing may be platform dependent:
b6646b3
+gdb_test "printf \"<%p>\\n\", (void *)7" ".*7>.*"
b6646b3
 
b6646b3
 # play with "print", too
b6646b3
 #