mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
gdb/
* c-typeprint.c (c_type_print_base): For no fields check include also TYPE_TYPEDEF_FIELD_COUNT. Print new typedefs section. * dwarf2read.c (struct typedef_field_list) (struct field_info) <typedef_field_list, typedef_field_list_count>: New. (dwarf2_add_typedef): New. (read_structure_type): Call dwarf2_add_typedef for DW_TAG_typedef. Copy also FI.TYPEDEF_FIELD_LIST. * gdbtypes.h (struct typedef_field) (struct cplus_struct_type) <typedef_field, typedef_field_count> (TYPE_TYPEDEF_FIELD_ARRAY, TYPE_TYPEDEF_FIELD, TYPE_TYPEDEF_FIELD_NAME) (TYPE_TYPEDEF_FIELD_TYPE, TYPE_TYPEDEF_FIELD_COUNT): New. gdb/testsuite/ * gdb.cp/namespace.exp (ptype OtherFileClass typedefs) (ptype ::C::OtherFileClass typedefs): New. * gdb.cp/namespace1.cc (C::OtherFileClass::cOtherFileClassType2) (C::OtherFileClass::cOtherFileClassVar2): New. (C::OtherFileClass::cOtherFileClassVar_use): Use also cOtherFileClassVar2. (C::cOtherFileType2, C::cOtherFileVar2): New. (C::cOtherFileVar_use): use also cOtherFileVar2. * gdb.cp/userdef.exp (ptype &*c): Permit arbitrary trailing text.
This commit is contained in:
@@ -820,6 +820,19 @@ struct cplus_struct_type
|
||||
int line;
|
||||
}
|
||||
*localtype_ptr;
|
||||
|
||||
/* typedefs defined inside this class. TYPEDEF_FIELD points to an array of
|
||||
TYPEDEF_FIELD_COUNT elements. */
|
||||
struct typedef_field
|
||||
{
|
||||
/* Unqualified name to be prefixed by owning class qualified name. */
|
||||
const char *name;
|
||||
|
||||
/* Type this typedef named NAME represents. */
|
||||
struct type *type;
|
||||
}
|
||||
*typedef_field;
|
||||
unsigned typedef_field_count;
|
||||
};
|
||||
|
||||
/* Struct used in computing virtual base list */
|
||||
@@ -1047,6 +1060,17 @@ extern void allocate_gnat_aux_type (struct type *);
|
||||
#define TYPE_LOCALTYPE_FILE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->file)
|
||||
#define TYPE_LOCALTYPE_LINE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->line)
|
||||
|
||||
#define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \
|
||||
TYPE_CPLUS_SPECIFIC (thistype)->typedef_field
|
||||
#define TYPE_TYPEDEF_FIELD(thistype, n) \
|
||||
TYPE_CPLUS_SPECIFIC (thistype)->typedef_field[n]
|
||||
#define TYPE_TYPEDEF_FIELD_NAME(thistype, n) \
|
||||
TYPE_TYPEDEF_FIELD (thistype, n).name
|
||||
#define TYPE_TYPEDEF_FIELD_TYPE(thistype, n) \
|
||||
TYPE_TYPEDEF_FIELD (thistype, n).type
|
||||
#define TYPE_TYPEDEF_FIELD_COUNT(thistype) \
|
||||
TYPE_CPLUS_SPECIFIC (thistype)->typedef_field_count
|
||||
|
||||
#define TYPE_IS_OPAQUE(thistype) (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) || \
|
||||
(TYPE_CODE (thistype) == TYPE_CODE_UNION)) && \
|
||||
(TYPE_NFIELDS (thistype) == 0) && \
|
||||
|
||||
Reference in New Issue
Block a user