* gdbtypes.c (fill_in_vptr_fieldno): Call check_stub_type.
authorJim Kingdon <jkingdon@engr.sgi.com>
Mon, 2 Aug 1993 19:21:04 +0000 (19:21 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Mon, 2 Aug 1993 19:21:04 +0000 (19:21 +0000)
* gdbtypes.{c,h}: Improve comments on vptr_fieldno.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/gdbtypes.h

index 73cafff..bf86119 100644 (file)
@@ -1,3 +1,8 @@
+Mon Aug  2 12:06:00 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
+
+       * gdbtypes.c (fill_in_vptr_fieldno): Call check_stub_type.
+       * gdbtypes.{c,h}: Improve comments on vptr_fieldno.
+
 Mon Aug  2 11:58:52 1993  Fred Fish  (fnf@deneb.cygnus.com)
 
        * README:  Elaborate on gdb C++ support and cfront support.
index 3710f39..bc7e257 100644 (file)
@@ -749,13 +749,19 @@ lookup_struct_elt_type (type, name, noerr)
   return (struct type *)-1;    /* For lint */
 }
 
-/* This function is really horrible, but to avoid it, there would need
-   to be more filling in of forward references.  */
+/* If possible, make the vptr_fieldno and vptr_basetype fields of TYPE
+   valid.  Callers should be aware that in some cases (for example,
+   the type or one of its baseclasses is a stub type and we are
+   debugging a .o file), this function will not be able to find the virtual
+   function table pointer, and vptr_fieldno will remain -1 and vptr_basetype
+   will remain NULL.  */
 
 void
 fill_in_vptr_fieldno (type)
      struct type *type;
 {
+  check_stub_type (type);
+
   if (TYPE_VPTR_FIELDNO (type) < 0)
     {
       int i;
index 679d569..8ccf37a 100644 (file)
@@ -255,8 +255,7 @@ struct type
     } *fields;
 
   /* For types with virtual functions, VPTR_BASETYPE is the base class which
-     defined the virtual function table pointer.  VPTR_FIELDNO is
-     the field number of that pointer in the structure.
+     defined the virtual function table pointer.  
 
      For types that are pointer to member types, VPTR_BASETYPE
      is the type that this pointer is a member of.
@@ -265,6 +264,13 @@ struct type
 
   struct type *vptr_basetype;
 
+  /* Field number of the virtual function table pointer in
+     VPTR_BASETYPE.  If -1, we were unable to find the virtual
+     function table pointer in initial symbol reading, and
+     fill_in_vptr_fieldno should be called to find it if possible.
+
+     Unused if this type does not have virtual functions.  */
+
   int vptr_fieldno;
 
   /* Slot to point to additional language-specific fields of this type.  */