* p-valprint.c (pascal_val_print): Use TYPE_ERROR_NAME.
authorTom Tromey <tromey@redhat.com>
Mon, 21 Jun 2010 18:01:51 +0000 (18:01 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 21 Jun 2010 18:01:51 +0000 (18:01 +0000)
* p-typeprint.c (pascal_type_print_base): Use TYPE_ERROR_NAME.
* m2-valprint.c (m2_val_print): Use TYPE_ERROR_NAME.
* gdbtypes.h (TYPE_ERROR_NAME): New macro.
* f-valprint.c (f_val_print): Use TYPE_ERROR_NAME.
* f-typeprint.c (f_type_print_base): Use TYPE_ERROR_NAME.
* dwarf2read.c (tag_type_to_type): Create a new error type on
failure.
* c-valprint.c (c_val_print): Use TYPE_ERROR_NAME.
* c-typeprint.c (c_type_print_base): Use TYPE_ERROR_NAME.

gdb/ChangeLog
gdb/c-typeprint.c
gdb/c-valprint.c
gdb/dwarf2read.c
gdb/f-typeprint.c
gdb/f-valprint.c
gdb/gdbtypes.h
gdb/m2-valprint.c
gdb/p-typeprint.c
gdb/p-valprint.c

index fd7dd5a1eeccba21a1a46138e5c29b874c4cac3a..de7d59bb02b7792f131b83c9eb97509eb103c2ac 100644 (file)
@@ -1,3 +1,16 @@
+2010-06-21  Tom Tromey  <tromey@redhat.com>
+
+       * p-valprint.c (pascal_val_print): Use TYPE_ERROR_NAME.
+       * p-typeprint.c (pascal_type_print_base): Use TYPE_ERROR_NAME.
+       * m2-valprint.c (m2_val_print): Use TYPE_ERROR_NAME.
+       * gdbtypes.h (TYPE_ERROR_NAME): New macro.
+       * f-valprint.c (f_val_print): Use TYPE_ERROR_NAME.
+       * f-typeprint.c (f_type_print_base): Use TYPE_ERROR_NAME.
+       * dwarf2read.c (tag_type_to_type): Create a new error type on
+       failure.
+       * c-valprint.c (c_val_print): Use TYPE_ERROR_NAME.
+       * c-typeprint.c (c_type_print_base): Use TYPE_ERROR_NAME.
+
 2010-06-21  Michael Snyder  <msnyder@vmware.com>
 
        * breakpoint.c (_initialize_breakpoint): Use add_prefix_cmd, 
index 9a6bc6d627ac7d2c6bdfbf747866fb38d6dd4d16..d07fb8f5dd66b8315668c3c6aa29669f74b0b742 100644 (file)
@@ -1121,7 +1121,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, _("<unknown type>"));
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_RANGE:
index e2a5b954e39c3d358a2be8567a40607834f14de9..e205705840715dfe831ea318e38039513a4943f9 100644 (file)
@@ -557,7 +557,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, _("<error type>"));
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_UNDEF:
index 613f0219b871c4b2a988bb6a9fd3deb2b313e02c..f9abf0a9459dca3e39e82db43b7d9d6ee509db14 100644 (file)
@@ -9173,9 +9173,18 @@ tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu)
   this_type = read_type_die (die, cu);
   if (!this_type)
     {
-      dump_die_for_error (die);
-      error (_("Dwarf Error: Cannot find type of die [in module %s]"), 
-            cu->objfile->name);
+      char *message, *saved;
+
+      /* read_type_die already issued a complaint.  */
+      message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
+                           cu->objfile->name,
+                           cu->header.offset,
+                           die->offset);
+      saved = obstack_copy0 (&cu->objfile->objfile_obstack,
+                            message, strlen (message));
+      xfree (message);
+
+      this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile);
     }
   return this_type;
 }
index ff013d0b0acebd99f8a5b1a416feb5b60dbe7163..d35a255ae1c29fb57f025b865b212f223ea89f86 100644 (file)
@@ -312,7 +312,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintfi_filtered (level, stream, "<unknown type>");
+      fprintfi_filtered (level, stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_RANGE:
index 4db0b2742b2f33b1a57ecf651c4b6e0714bcf5df..85f698d5dac05f32df257892fa751dccf2551686 100644 (file)
@@ -398,7 +398,7 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, "<error type>");
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_RANGE:
index 32e5f041de106f8b02ff81cb08f37efe6d106f62..ce79dc228f1d2726bad3e7de6ee99920f5ae4b3e 100644 (file)
@@ -1054,6 +1054,11 @@ extern void allocate_gnat_aux_type (struct type *);
                                   || TYPE_NFN_FIELDS (thistype) == 0) &&               \
                                   (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype)))
 
+/* A helper macro that returns the name of an error type.  If the type
+   has a name, it is used; otherwise, a default is used.  */
+#define TYPE_ERROR_NAME(type) \
+  (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>"))
+
 struct builtin_type
 {
   /* Integral types.  */
index 95a7a93d2497aa5d61c424892566d6bf015aedc6..e27ce8c1a2e7e57940689164df23b716bb218546 100644 (file)
@@ -652,7 +652,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, _("<error type>"));
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_UNDEF:
index 1792cf8e798667f9be8cbf2640b83bc2c5abe05a..c0752b7d78ca26ca2ccbb6acdf960f1e9d8f31c2 100644 (file)
@@ -758,7 +758,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, "<unknown type>");
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
       /* this probably does not work for enums */
index 3d00a69867fd820bb96123205589312ced9ba903..4d39bed265b73a0097429e20d85e73bbd775961b 100644 (file)
@@ -540,7 +540,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
       break;
 
     case TYPE_CODE_ERROR:
-      fprintf_filtered (stream, "<error type>");
+      fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
       break;
 
     case TYPE_CODE_UNDEF: