From ce80b8bd374e14c1cebe149724274b1894f5f8cf Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 13 Mar 2020 17:39:52 -0600 Subject: [PATCH] Introduce c_value_print_memberptr This adds c_value_print_memberptr, a value-based analogue of c_val_print_memberptr. gdb/ChangeLog 2020-03-13 Tom Tromey * c-valprint.c (c_value_print_memberptr): New function. (c_value_print_inner): Use it. --- gdb/ChangeLog | 5 +++++ gdb/c-valprint.c | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b5d41ae130f..15d20e18e0b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-03-13 Tom Tromey + + * c-valprint.c (c_value_print_memberptr): New function. + (c_value_print_inner): Use it. + 2020-03-13 Tom Tromey * c-valprint.c (c_value_print_int): New function. diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index 80ba5d7195a..d1a0816f439 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -553,6 +553,23 @@ c_val_print_memberptr (struct type *type, const gdb_byte *valaddr, } } +/* c_value_print helper for TYPE_CODE_MEMBERPTR. */ + +static void +c_value_print_memberptr (struct value *val, struct ui_file *stream, + int recurse, + const struct value_print_options *options) +{ + if (!options->format) + { + struct type *type = check_typedef (value_type (val)); + const gdb_byte *valaddr = value_contents_for_printing (val); + cp_print_class_member (valaddr, type, stream, "&"); + } + else + generic_value_print (val, stream, recurse, options, &c_decorations); +} + /* See val_print for a description of the various parameters of this function; they are identical. */ @@ -667,8 +684,7 @@ c_value_print_inner (struct value *val, struct ui_file *stream, int recurse, break; case TYPE_CODE_MEMBERPTR: - c_val_print_memberptr (type, valaddr, 0, address, stream, - recurse, val, options); + c_value_print_memberptr (val, stream, recurse, options); break; case TYPE_CODE_REF: -- 2.30.2