mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-31 01:45:52 +08:00
* c-exp.y (qualified_name): Replace explicit check for valid
destructor name with call to destructor_name_p. * c-lang.h, c-typeprint.c (cp_type_print_method_args): Removed, no longer needed. * c-typeprint.c (c_type_print_varspec_prefix, c_type_print_base): Replace remaining fprintf_unfiltered calls with their filtered variant. (c_type_print_base): Do not print return type for destructors from template classes. Replace cp_type_print_method_args with cplus_demangle call to get consistent type output for stubbed and unstubbed methods. * cp-valprint.c (cp_print_class_method): Replace cp_type_print_method_args with cplus_demangle call to get consistent type output for stubbed and unstubbed methods. * gdbtypes.c, gdbtypes.h (get_destructor_fn_field): New function to find the destructor field indices for a type. * gdbtypes.h (struct type): Clarify comments for vptr_basetype and arg_types fields. (struct fn_field): Remove args field, no longer used. * symtab.c (decode_line_1), valops.c (value_struct_elt, check_field_in): Use get_destructor_fn_field to find the destructor field indices instead of assuming that the compiler passes the member function fields in a specific order. * symtab.c (find_methods): Pass NULL instead of SYMBOL_BLOCK_VALUE to lookup_symbol. (list_symbol): Replace cp_type_print_method_args with cplus_demangle call in zapped out code and explain why this code is zapped out.
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/* Support routines for manipulating internal types for GDB.
|
||||
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support, using pieces from other GDB modules.
|
||||
|
||||
This file is part of GDB.
|
||||
@ -879,6 +879,35 @@ fill_in_vptr_fieldno (type)
|
||||
}
|
||||
}
|
||||
|
||||
/* Find the method and field indices for the destructor in class type T.
|
||||
Return 1 if the destructor was found, otherwise, return 0. */
|
||||
|
||||
int
|
||||
get_destructor_fn_field (t, method_indexp, field_indexp)
|
||||
struct type *t;
|
||||
int *method_indexp;
|
||||
int *field_indexp;
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < TYPE_NFN_FIELDS (t); i++)
|
||||
{
|
||||
int j;
|
||||
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
|
||||
|
||||
for (j = 0; j < TYPE_FN_FIELDLIST_LENGTH (t, i); j++)
|
||||
{
|
||||
if (DESTRUCTOR_PREFIX_P (TYPE_FN_FIELD_PHYSNAME (f, j)))
|
||||
{
|
||||
*method_indexp = i;
|
||||
*field_indexp = j;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989.
|
||||
|
||||
If this is a stubbed struct (i.e. declared as struct foo *), see if
|
||||
|
Reference in New Issue
Block a user