* stabsread.c (read_type): If we find any type numbers that are
authorJim Blandy <jimb@codesourcery.com>
Wed, 18 Feb 2004 01:09:03 +0000 (01:09 +0000)
committerJim Blandy <jimb@codesourcery.com>
Wed, 18 Feb 2004 01:09:03 +0000 (01:09 +0000)
forward references, complain if the references aren't resolved by
the time we're finished reading.
(cleanup_undefined_types): Make error message more appropriate for
a complaint.

gdb/ChangeLog
gdb/stabsread.c

index 5b8fa48785886cad9ca5f5f345ee257618bf7ce8..55733fb58e630ee40c9697e409880af695d32de1 100644 (file)
@@ -1,3 +1,11 @@
+2004-02-17  Jim Blandy  <jimb@redhat.com>
+
+       * stabsread.c (read_type): If we find any type numbers that are
+       forward references, complain if the references aren't resolved by
+       the time we're finished reading.
+       (cleanup_undefined_types): Make error message more appropriate for
+       a complaint.
+
 2004-02-17  Elena Zannoni  <ezannoni@redhat.com>
 
        * Makefile.in (defs_h): Remove dependency on progress_h.
index 021c19eb489ea9a75d4c59adaec80622b0813834..5cee516bcb38068a53c87ba3252548dba16acaa7 100644 (file)
@@ -1446,11 +1446,21 @@ read_type (char **pp, struct objfile *objfile)
       if (read_type_number (pp, typenums) != 0)
        return error_type (pp, objfile);
 
-      /* Type is not being defined here.  Either it already exists,
-         or this is a forward reference to it.  dbx_alloc_type handles
-         both cases.  */
       if (**pp != '=')
-       return dbx_alloc_type (typenums, objfile);
+        {
+          /* Type is not being defined here.  Either it already
+             exists, or this is a forward reference to it.
+             dbx_alloc_type handles both cases.  */
+          type = dbx_alloc_type (typenums, objfile);
+
+          /* If this is a forward reference, arrange to complain if it
+             doesn't get patched up by the time we're done
+             reading.  */
+          if (TYPE_CODE (type) == TYPE_CODE_UNDEF)
+            add_undefined_type (type);
+
+          return type;
+        }
 
       /* Type is being defined here.  */
       /* Skip the '='.
@@ -4197,7 +4207,8 @@ cleanup_undefined_types (void)
        default:
          {
            complaint (&symfile_complaints,
-                      "GDB internal error.  cleanup_undefined_types with bad type %d.",
+                      "forward-referenced types left unresolved, "
+                       "type code %d.",
                       TYPE_CODE (*type));
          }
          break;