Factor out pointer printing code from generic_val_print
authorSimon Marchi <simon.marchi@ericsson.com>
Mon, 27 Jul 2015 18:11:19 +0000 (14:11 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Mon, 27 Jul 2015 18:11:19 +0000 (14:11 -0400)
gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out pointer
printing code to ...
(generic_val_print_ptr): ... this new function.

gdb/ChangeLog
gdb/valprint.c

index 2de01ca3925a18fa2d38adca8d7a83772f4db053..e29dbc99fb4657fd82da8a5297ac4b198608eaf9 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * valprint.c (generic_val_print): Factor out pointer
+       printing code to ...
+       (generic_val_print_ptr): ... this new function.
+
 2015-07-27  Simon Marchi  <simon.marchi@ericsson.com>
 
        * valprint.c (generic_val_print): Factor out array
index 48893dbb8909a18bb0ff8ea1436f9485a28fcbe1..dcc86496f932f75372017b7361359399fb6b8ff1 100644 (file)
@@ -425,6 +425,29 @@ generic_val_print_array (struct type *type, const gdb_byte *valaddr,
 
 }
 
+/* generic_val_print helper for TYPE_CODE_PTR.  */
+
+static void
+generic_val_print_ptr (struct type *type, const gdb_byte *valaddr,
+                      int embedded_offset, struct ui_file *stream,
+                      const struct value *original_value,
+                      const struct value_print_options *options)
+{
+  if (options->format && options->format != 's')
+    {
+      val_print_scalar_formatted (type, valaddr, embedded_offset,
+                                 original_value, options, 0, stream);
+    }
+  else
+    {
+      struct type *unresolved_elttype = TYPE_TARGET_TYPE(type);
+      struct type *elttype = check_typedef (unresolved_elttype);
+      CORE_ADDR addr = unpack_pointer (type, valaddr + embedded_offset);
+
+      print_unpacked_pointer (type, elttype, addr, stream, options);
+    }
+}
+
 /* A generic val_print that is suitable for use by language
    implementations of the la_val_print method.  This function can
    handle most type codes, though not all, notably exception
@@ -447,10 +470,9 @@ generic_val_print (struct type *type, const gdb_byte *valaddr,
   struct gdbarch *gdbarch = get_type_arch (type);
   unsigned int i = 0;  /* Number of characters printed.  */
   unsigned len;
-  struct type *elttype, *unresolved_elttype;
+  struct type *elttype;
   struct type *unresolved_type = type;
   LONGEST val;
-  CORE_ADDR addr;
 
   type = check_typedef (type);
   switch (TYPE_CODE (type))
@@ -466,16 +488,8 @@ generic_val_print (struct type *type, const gdb_byte *valaddr,
       break;
 
     case TYPE_CODE_PTR:
-      if (options->format && options->format != 's')
-       {
-         val_print_scalar_formatted (type, valaddr, embedded_offset,
-                                     original_value, options, 0, stream);
-         break;
-       }
-      unresolved_elttype = TYPE_TARGET_TYPE (type);
-      elttype = check_typedef (unresolved_elttype);
-      addr = unpack_pointer (type, valaddr + embedded_offset);
-      print_unpacked_pointer (type, elttype, addr, stream, options);
+      generic_val_print_ptr (type, valaddr, embedded_offset, stream,
+                            original_value, options);
       break;
 
     case TYPE_CODE_REF:
This page took 0.030217 seconds and 4 git commands to generate.