mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-03 09:41:26 +00:00
Modified Files:
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.
This commit is contained in:
parent
4ecfad7942
commit
f1c6dbf683
@ -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:
|
||||
|
12
gdb/values.c
12
gdb/values.c
@ -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 vt$ 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 vb$. */
|
||||
/* 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 _vb_. */
|
||||
/* gcc 2.5 will use __vb_. */
|
||||
if (name[1] == '_' && name[2] == 'v' && name[3] == 'b' && name[4] == '_')
|
||||
field_class_name = name + 5;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user