* config/m68k/monitor.mt (TDEPFILE): Add remote-es.o.
[deliverable/binutils-gdb.git] / gdb / cp-valprint.c
index cce1f191407e728eb633d529123b3b11f042e9f3..07ba9fb6ef4dcbeefc6b4fe083baac06acb31e1e 100644 (file)
@@ -52,15 +52,6 @@ extern struct obstack dont_print_obstack;
 
 /* END-FIXME */
 
-
-/* BEGIN-FIXME:  Hooks into c-valprint.c */
-
-extern int
-c_val_print PARAMS ((struct type *, char *, CORE_ADDR, GDB_FILE *, int, int, int,
-                    enum val_prettyprint));
-/* END-FIXME */
-
-
 void
 cp_print_class_method (valaddr, type, stream)
      char *valaddr;
@@ -296,17 +287,31 @@ cp_print_value_fields (type, valaddr, stream, format, recurse, pretty,
 
              /* Bitfields require special handling, especially due to byte
                 order problems.  */
-             v = value_from_longest (TYPE_FIELD_TYPE (type, i),
+             if (TYPE_FIELD_IGNORE (type, i))
+               {
+                  fputs_filtered ("<optimized out or zero length>", stream);
+               }
+             else
+               {
+                  v = value_from_longest (TYPE_FIELD_TYPE (type, i),
                                   unpack_field_as_long (type, valaddr, i));
 
-             c_val_print (TYPE_FIELD_TYPE (type, i), VALUE_CONTENTS (v), 0,
-                          stream, format, 0, recurse + 1, pretty);
+                   val_print (TYPE_FIELD_TYPE(type, i), VALUE_CONTENTS (v), 0,
+                             stream, format, 0, recurse + 1, pretty);
+               }
            }
          else
            {
-             c_val_print (TYPE_FIELD_TYPE (type, i), 
-                          valaddr + TYPE_FIELD_BITPOS (type, i) / 8,
-                          0, stream, format, 0, recurse + 1, pretty);
+             if (TYPE_FIELD_IGNORE (type, i))
+               {
+                  fputs_filtered ("<optimized out or zero length>", stream);
+               }
+             else
+               {
+                  val_print (TYPE_FIELD_TYPE (type, i), 
+                             valaddr + TYPE_FIELD_BITPOS (type, i) / 8,
+                             0, stream, format, 0, recurse + 1, pretty);
+               }
            }
        }
       if (pretty)
@@ -348,9 +353,14 @@ cplus_print_value (type, valaddr, stream, format, recurse, pretty, dont_print)
 
   for (i = 0; i < n_baseclasses; i++)
     {
+      /* FIXME-32x64--assumes that a target pointer can fit in a char *.
+        Fix it by nuking baseclass_addr.  */
       char *baddr;
       int err;
-      char *basename = TYPE_NAME (TYPE_BASECLASS (type, i));
+      char *basename;
+
+      check_stub_type (TYPE_BASECLASS (type, i));
+      basename = TYPE_NAME (TYPE_BASECLASS (type, i));
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
        {
@@ -384,8 +394,11 @@ cplus_print_value (type, valaddr, stream, format, recurse, pretty, dont_print)
       fputs_filtered (basename ? basename : "", stream);
       fputs_filtered ("> = ", stream);
       if (err != 0)
-       fprintf_filtered (stream,
-                         "<invalid address 0x%lx>", (unsigned long) baddr);
+       {
+         fprintf_filtered (stream, "<invalid address ");
+         print_address_numeric ((CORE_ADDR) baddr, stream);
+         fprintf_filtered (stream, ">");
+       }
       else
        cp_print_value_fields (TYPE_BASECLASS (type, i), baddr, stream, format,
                               recurse, pretty,
This page took 0.023885 seconds and 4 git commands to generate.