diff options
Diffstat (limited to 'gdb/cp-valprint.c')
-rw-r--r-- | gdb/cp-valprint.c | 28 |
1 files changed, 22 insertions, 6 deletions
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, "<invalid address>"); 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: |