[binutils-gdb] Factor out memberptr printing code from c_val_print

Simon Marchi simark@sourceware.org
Thu Jul 9 15:26:00 GMT 2015


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=938c69a11897acea85275b93b5bb376b589564fa

commit 938c69a11897acea85275b93b5bb376b589564fa
Author: Simon Marchi <simon.marchi@ericsson.com>
Date:   Thu Jul 9 11:19:25 2015 -0400

    Factor out memberptr printing code from c_val_print
    
    gdb/ChangeLog:
    
    	* c-valprint.c (c_val_print): Factor out memberptr printing code
    	from c_val_print to ...
    	(c_val_print_memberptr): ... this new function.

Diff:
---
 gdb/ChangeLog    |  6 ++++++
 gdb/c-valprint.c | 29 +++++++++++++++++++++++------
 2 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8a6a2ac..b5b80a3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
 2015-07-09  Simon Marchi  <simon.marchi@ericsson.com>
 
+	* c-valprint.c (c_val_print): Factor out memberptr printing code
+	from c_val_print to ...
+	(c_val_print_memberptr): ... this new function.
+
+2015-07-09  Simon Marchi  <simon.marchi@ericsson.com>
+
 	* c-valprint.c (c_val_print): Factor out int printing code to ...
 	(c_val_print_int): ... this new function.
 
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index 0a61d7a..d76a206 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -456,6 +456,26 @@ c_val_print_int (struct type *type, struct type *unresolved_type,
     }
 }
 
+/* c_val_print helper for TYPE_CODE_MEMBERPTR.  */
+
+static void
+c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
+		       int embedded_offset, CORE_ADDR address,
+		       struct ui_file *stream, int recurse,
+		       const struct value *original_value,
+		       const struct value_print_options *options)
+{
+  if (!options->format)
+    {
+      cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
+    }
+  else
+    {
+      generic_val_print (type, valaddr, embedded_offset, address, stream,
+			 recurse, original_value, options, &c_decorations);
+    }
+}
+
 /* See val_print for a description of the various parameters of this
    function; they are identical.  */
 
@@ -501,12 +521,9 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
       break;
 
     case TYPE_CODE_MEMBERPTR:
-      if (!options->format)
-	{
-	  cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
-	  break;
-	}
-      /* FALLTHROUGH */
+      c_val_print_memberptr (type, valaddr, embedded_offset, address, stream,
+			     recurse, original_value, options);
+      break;
 
     case TYPE_CODE_REF:
     case TYPE_CODE_ENUM:



More information about the Gdb-cvs mailing list