2009-11-12 Daniel Jacobowitz <dan@codesourcery.com>
Paul Brook <paul@codesourcery.com> * c-typeprint.c (c_type_print_base): Skip artificial fields. Use get_vptr_fieldno to skip the vtable pointer. * dwarf2read.c (dwarf2_add_field): Set FIELD_ARTIFICIAL on artificial fields. (dwarf2_add_member_fn): Complain about virtual member functions without DW_AT_vtable_elem_location and force TYPE_CPLUS_DYNAMIC. * gdbtypes.c (get_vptr_fieldno): Update comment. * gdbtypes.h (struct cplus_struct_type): Add is_dynamic. (TYPE_CPLUS_DYNAMIC): New macro. * gnu-v3-abi.c (gnuv3_dynamic_class): New. (gnuv3_get_vtable): Rewrite to use gnuv3_dynamic_class. Move higher. (gnuv3_rtti_type, gnuv3_get_virtual_fn, gnuv3_baseclass_offset): Use gnuv3_get_vtable. * varobj.c (cplus_class_num_children, cplus_describe_child): Skip artificial fields. Use get_vptr_fieldno to skip the vtable pointer.
This commit is contained in:
parent
87728fa060
commit
d48cc9dd6f
7 changed files with 157 additions and 103 deletions
|
@ -1277,7 +1277,8 @@ lookup_struct_elt_type (struct type *type, char *name, int noerr)
|
|||
If not found, return -1 and ignore BASETYPEP.
|
||||
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
|
||||
debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
|
||||
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 or incomplete. */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue