From a6bac58e84001d33b9540e208e9ca6d6ab265bf3 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 28 May 2009 01:05:14 +0000 Subject: gdb 2009-05-27 Tom Tromey Thiago Jung Bauermann Phil Muldoon Paul Pluzhnikov Vladimir Prus * python/python-value.c (value_object_to_value): New function. * python/python-internal.h: Include frameobject.h. (gdbpy_children_cst, gdbpy_to_string_cst, gdbpy_display_hint_cst): Declare. (value_object_to_value): Declare. * printcmd.c (struct format_data) : New field. (last_format): Default to 0. (decode_format): Initialize val.raw. Handle /r flag. (print_command_1): Initialize fmt.raw and opts.raw. (output_command): Likewise. (x_command): Fix initialization of fmt.format. Initialize fmt.raw. (display_command): Initialize fmt.raw. (do_one_display): Set opts.raw. * python/python.c (gdbpy_to_string_cst, gdbpy_children_cst, gdbpy_display_hint_cst): New globals. (_initialize_python): Initialize them. Set gdb.pretty_printers. * cp-valprint.c: Include python.h. (cp_print_value): Call apply_val_pretty_printer. * python/python.h (apply_val_pretty_printer): Declare. * stack.c (print_this_frame_argument_p): Remove. (print_frame_args): Compute summary flag. Don't use print_this_frame_argument_p. * valprint.c: Include python.h. (user_print_options): Initialize new fields. (scalar_type_p): New function. (val_print): Handle 'raw' and 'summary' modes. Call apply_val_pretty_printer. (value_print): Handle 'raw' mode. * valprint.h (struct value_print_options) : New fields. * Makefile.in (SUBDIR_PYTHON_OBS): Add python-prettyprint.o (SUBDIR_PYTHON_SRCS): Add python-prettyprint.c. (python-prettyprint.o): New target. * python/python-prettyprint.c: New file. gdb/doc 2009-05-27 Tom Tromey Thiago Jung Bauermann Phil Muldoon * gdb.texinfo (Objfiles In Python): Reference pretty printing. (Pretty Printing): New node. (Selecting Pretty-Printers): Likewise. (Python API): Update. (Output Formats): Document /r format. gdb/testsuite 2009-05-27 Tom Tromey Thiago Jung Bauermann Phil Muldoon Paul Pluzhnikov * gdb.python/python-prettyprint.exp: New file. * gdb.python/python-prettyprint.c: New file. * gdb.python/python-prettyprint.py: New file. * gdb.base/display.exp: print/r is now valid. --- gdb/cp-valprint.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'gdb/cp-valprint.c') diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 181b4ff..d264b40 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -36,6 +36,7 @@ #include "valprint.h" #include "cp-support.h" #include "language.h" +#include "python/python.h" /* Controls printing of vtbl's */ static void @@ -418,12 +419,27 @@ cp_print_value (struct type *type, struct type *real_type, if (skip >= 1) fprintf_filtered (stream, ""); else - cp_print_value_fields (baseclass, thistype, base_valaddr, - thisoffset + boffset, address + boffset, - stream, recurse, options, - ((struct type **) - obstack_base (&dont_print_vb_obstack)), - 0); + { + int result = 0; + + /* Attempt to run the Python pretty-printers on the + baseclass if possible. */ + if (!options->raw) + result = apply_val_pretty_printer (baseclass, base_valaddr, + thisoffset + boffset, + address + boffset, + stream, recurse, + options, + current_language); + + if (!result) + cp_print_value_fields (baseclass, thistype, base_valaddr, + thisoffset + boffset, address + boffset, + stream, recurse, options, + ((struct type **) + obstack_base (&dont_print_vb_obstack)), + 0); + } fputs_filtered (", ", stream); flush_it: -- cgit v1.1