2011-01-08 Michael Snyder <msnyder@vmware.com>
[deliverable/binutils-gdb.git] / gdb / jv-valprint.c
index 0a2cc538aa3b820ca809c9b67895d1fd95ce8ffb..d345685f970aedc925e6d5dadecb2ddbd280649f 100644 (file)
@@ -1,7 +1,7 @@
 /* Support for printing Java values for GDB, the GNU debugger.
 
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-   2008, 2009, 2010 Free Software Foundation, Inc.
+   2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -53,7 +53,7 @@ java_value_print (struct value *val, struct ui_file *stream,
     {
       CORE_ADDR obj_addr;
 
-      /* Get the run-time type, and cast the object into that */
+      /* Get the run-time type, and cast the object into that */
 
       obj_addr = unpack_pointer (type, value_contents (val));
 
@@ -89,9 +89,9 @@ java_value_print (struct value *val, struct ui_file *stream,
       if (el_type == NULL)
        {
          CORE_ADDR element;
-         CORE_ADDR next_element = -1; /* dummy initial value */
+         CORE_ADDR next_element = -1; /* Dummy initial value.  */
 
-         /* Skip object header and length. */
+         /* Skip object header and length.  */
          address += get_java_object_header_size (gdbarch) + 4;
 
          while (i < length && things_printed < options->print_max)
@@ -177,7 +177,8 @@ java_value_print (struct value *val, struct ui_file *stream,
              for (reps = 1; i + reps < length; reps++)
                {
                  set_value_lazy (next_v, 1);
-                 set_value_offset (next_v, value_offset (next_v) + TYPE_LENGTH (el_type));
+                 set_value_offset (next_v, value_offset (next_v)
+                                   + TYPE_LENGTH (el_type));
                  if (memcmp (value_contents (v), value_contents (next_v),
                              TYPE_LENGTH (el_type)) != 0)
                    break;
@@ -205,7 +206,7 @@ java_value_print (struct value *val, struct ui_file *stream,
       return 0;
     }
 
-  /* If it's type String, print it */
+  /* If it's type String, print it */
 
   if (TYPE_CODE (type) == TYPE_CODE_PTR
       && TYPE_TARGET_TYPE (type)
@@ -225,7 +226,7 @@ java_value_print (struct value *val, struct ui_file *stream,
       unsigned long count;
       struct value *mark;
 
-      mark = value_mark ();    /* Remember start of new values */
+      mark = value_mark ();    /* Remember start of new values */
 
       data_val = value_struct_elt (&val, NULL, "data", NULL, NULL);
       data = value_as_address (data_val);
@@ -236,7 +237,7 @@ java_value_print (struct value *val, struct ui_file *stream,
       count_val = value_struct_elt (&val, NULL, "count", NULL, NULL);
       count = value_as_address (count_val);
 
-      value_free_to_mark (mark);       /* Release unnecessary values */
+      value_free_to_mark (mark);       /* Release unnecessary values */
 
       char_type = builtin_java_type (gdbarch)->builtin_char;
       val_print_string (char_type, NULL, data + boffset, count, stream,
@@ -394,6 +395,14 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr,
                {
                  fputs_filtered ("<optimized out or zero length>", stream);
                }
+             else if (value_bits_synthetic_pointer (val,
+                                                    TYPE_FIELD_BITPOS (type,
+                                                                       i),
+                                                    TYPE_FIELD_BITSIZE (type,
+                                                                        i)))
+               {
+                 fputs_filtered (_("<synthetic pointer>"), stream);
+               }
              else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
                                          TYPE_FIELD_BITSIZE (type, i)))
                {
@@ -478,7 +487,7 @@ java_val_print (struct type *type, const gdb_byte *valaddr,
                const struct value_print_options *options)
 {
   struct gdbarch *gdbarch = get_type_arch (type);
-  unsigned int i = 0;  /* Number of characters printed */
+  unsigned int i = 0;  /* Number of characters printed */
   struct type *target_type;
   CORE_ADDR addr;
 
@@ -496,10 +505,11 @@ java_val_print (struct type *type, const gdb_byte *valaddr,
        {
          /* Print the unmangled name if desired.  */
          /* Print vtable entry - we only get here if we ARE using
-            -fvtable_thunks.  (Otherwise, look under TYPE_CODE_STRUCT.) */
+            -fvtable_thunks.  (Otherwise, look under TYPE_CODE_STRUCT.)  */
          /* Extract an address, assume that it is unsigned.  */
          print_address_demangle (gdbarch,
-                                 extract_unsigned_integer (valaddr, TYPE_LENGTH (type)),
+                                 extract_unsigned_integer (valaddr,
+                                                           TYPE_LENGTH (type)),
                                  stream, demangle);
          break;
        }
This page took 0.027819 seconds and 4 git commands to generate.