Browse Source

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

for gcc versions after gcc-2.8.1.
binutils-2_13-branch
Peter Schauer 25 years ago
parent
commit
0e5e3ea669
  1. 5
      gdb/ChangeLog
  2. 15
      gdb/cp-valprint.c

5
gdb/ChangeLog

@ -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

15
gdb/cp-valprint.c

@ -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;
}

Loading…
Cancel
Save