* gdbtypes.c (check_typedef): Do not replace stub type if
authorJoel Brobecker <brobecker@gnat.com>
Wed, 28 Feb 2007 16:35:49 +0000 (16:35 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Wed, 28 Feb 2007 16:35:49 +0000 (16:35 +0000)
        the resolved type is not defined in the same objfile.

gdb/ChangeLog
gdb/gdbtypes.c

index 22e31fb..096d9be 100644 (file)
@@ -1,3 +1,9 @@
+2007-02-28  Jerome Guitton  <guitton@adacore.com>
+            Joel Brobecker  <brobecker@adacore.com>
+
+       * gdbtypes.c (check_typedef): Do not replace stub type if
+       the resolved type is not defined in the same objfile.
+
 2007-02-28  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * top.c (gdb_readline_wrapper_cleanup): Remove invalid assertion.
index 5d56de0..30b5362 100644 (file)
@@ -1514,7 +1514,15 @@ check_typedef (struct type *type)
        }
       sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0, (struct symtab **) NULL);
       if (sym)
-       make_cv_type (is_const, is_volatile, SYMBOL_TYPE (sym), &type);
+        {
+          /* Same as above for opaque types, we can replace the stub
+             with the complete type only if they are int the same
+             objfile.  */
+         if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
+            make_cv_type (is_const, is_volatile, SYMBOL_TYPE (sym), &type);
+         else
+           type = SYMBOL_TYPE (sym);
+        }
     }
 
   if (TYPE_TARGET_STUB (type))