Modified Files:
authorKung Hsu <kung@cygnus>
Thu, 4 Nov 1993 00:49:24 +0000 (00:49 +0000)
committerKung Hsu <kung@cygnus>
Thu, 4 Nov 1993 00:49:24 +0000 (00:49 +0000)
values.c valops.c ChangeLog

        * values.c (value_fn_field): when physical name not found, do not
        error, but return null.
        * valops.c (value_struct_elt): when name and args match does not
        mean it is the one, some times a typedef class can have the same
        memeber method and args. This probably will not happen with new
        version of g++, but it does happen in old g++ and cause gdb error.

gdb/ChangeLog
gdb/values.c

index e501f0a..0930e7e 100644 (file)
@@ -1,3 +1,12 @@
+Wed Nov  3 16:24:09 1993  Kung Hsu  (kung@cirdan.cygnus.com)
+
+       * values.c (value_fn_field): when physical name not found, do not
+       error, but return null.
+       * valops.c (value_struct_elt): when name and args match does not
+       mean it is the one, some times a typedef class can have the same
+       memeber method and args. This probably will not happen with new
+       version of g++, but it does happen in old g++ and cause gdb error.
+
 Wed Nov  3 09:20:18 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
 
        Merge changes for dos x udi:
index 95b751a..494f5bd 100644 (file)
@@ -762,8 +762,12 @@ value_fn_field (arg1p, f, j, type, offset)
 
   sym = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
                       0, VAR_NAMESPACE, 0, NULL);
-  if (! sym) error ("Internal error: could not find physical method named %s",
+  if (! sym) 
+       return (value)NULL;
+/*
+       error ("Internal error: could not find physical method named %s",
                    TYPE_FN_FIELD_PHYSNAME (f, j));
+*/
   
   v = allocate_value (ftype);
   VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
@@ -928,7 +932,7 @@ value_headof (in_arg, btype, dtype)
        * But we leave it in for future use, when we will hopefully
        * have optimizes the vtable to use thunks instead of offsets. */
       /* Use the name of vtable itself to extract a base type. */
-      demangled_name += 4;  /* Skip \7fvt$ prefix. */
+      demangled_name += 4;  /* Skip _vt$ prefix. */
     }
   else
     {
@@ -985,10 +989,10 @@ vb_match (type, index, basetype)
 
   if (*name != '_')
     return 0;
-  /* gcc 2.4 uses \7fvb$.  */
+  /* gcc 2.4 uses _vb$.  */
   if (name[1] == 'v' && name[2] == 'b' && name[3] == CPLUS_MARKER)
     field_class_name = name + 4;
-  /* gcc 2.5 will use \7f_vb_.  */
+  /* gcc 2.5 will use __vb_.  */
   if (name[1] == '_' && name[2] == 'v' && name[3] == 'b' && name[4] == '_')
     field_class_name = name + 5;