* cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type

for gcc versions after gcc-2.8.1.
This commit is contained in:
Peter Schauer 2002-03-16 20:53:14 +00:00
parent 9b013045b0
commit 0e5e3ea669
2 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2002-03-16 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type
for gcc versions after gcc-2.8.1.
2002-03-16 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* eval.c (evaluate_subexp_standard): Fix setup of ``this'' pointer

View File

@ -1,6 +1,6 @@
/* Support for printing C++ values for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
2000, 2001
2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of GDB.
@ -201,6 +201,8 @@ cp_is_vtbl_ptr_type (struct type *type)
int
cp_is_vtbl_member (struct type *type)
{
/* With older versions of g++, the vtbl field pointed to an array
of structures. Nowadays it points directly to the structure. */
if (TYPE_CODE (type) == TYPE_CODE_PTR)
{
type = TYPE_TARGET_TYPE (type);
@ -215,6 +217,17 @@ cp_is_vtbl_member (struct type *type)
return cp_is_vtbl_ptr_type (type);
}
}
else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) /* if not using thunks */
{
return cp_is_vtbl_ptr_type (type);
}
else if (TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
{
/* The type name of the thunk pointer is NULL when using dwarf2.
We could test for a pointer to a function, but there is
no type info for the virtual table either, so it wont help. */
return cp_is_vtbl_ptr_type (type);
}
}
return 0;
}