mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
gdb/
PR symtab/7259: * ada-exp.y (convert_char_literal): Use TYPE_FIELD_ENUMVAL. * ada-lang.c (ada_discrete_type_high_bound) (ada_discrete_type_low_bound): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. (ada_identical_enum_types_p): Use TYPE_FIELD_ENUMVAL. (pos_atr, value_val_atr): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. * ada-typeprint.c (print_enum_type): Change variable lastval to LONGEST. Use TYPE_FIELD_ENUMVAL. * ada-valprint.c (print_optional_low_bound, ada_print_scalar) (ada_val_print_1): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. * c-typeprint.c (c_type_print_base): Move variable lastval to inner block, change it to LONGEST. Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. * coffread.c (coff_read_enum_type): Use SET_FIELD_ENUMVAL. * dwarf2read.c (process_enumeration_scope): Likewise. * gdb-gdb.py (TypeFlagsPrinter): Use field.enumval instead of field.bitpos. (class StructMainTypePrettyPrinter): Support also FIELD_LOC_KIND_ENUMVAL. * gdbtypes.c (get_discrete_bounds): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. (recursive_dump_type): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. (copy_type_recursive): Support also FIELD_LOC_KIND_ENUMVAL. * gdbtypes.h (enum field_loc_kind): New FIELD_LOC_KIND_ENUMVAL. (struct main_type.flds_bnds.fields.loc): Adjust bitpos comment. New field enumval. (struct main_type.flds_bnds.bields): Adjust loc_kind and bitsize to accommodate enumval. (struct call_site): Adjust loc_kind to accommodate enumval. (FIELD_ENUMVAL, FIELD_ENUMVAL_LVAL, SET_FIELD_ENUMVAL) (TYPE_FIELD_ENUMVAL): New macros. * m2-typeprint.c (m2_enum): Use TYPE_FIELD_ENUMVAL. * mdebugread.c (parse_symbol): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. * p-typeprint.c (pascal_type_print_base): Likewise. * python/lib/gdb/printing.py (class FlagEnumerationPrinter): Use enumval. * python/lib/gdb/types.py (make_enum_dict): Likewise. * python/py-type.c (convert_field): New variable addrstring. Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. (check_types_equal): Support also FIELD_LOC_KIND_ENUMVAL. * stabsread.c (read_enum_type): Use SET_FIELD_ENUMVAL. * typepint.c (print_type_scalar): Use TYPE_FIELD_ENUMVAL for TYPE_CODE_ENUM. * valprint.c (generic_val_print): Likewise. gdb/testsuite/ PR symtab/7259: * gdb.base/enumval.c: New test case. * gdb.base/enumval.exp: New test case. * gdb.python/py-type.exp (test_enums): Use field.enumval instead of field.bitpos.
This commit is contained in:
@@ -775,13 +775,13 @@ get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
|
||||
entries. */
|
||||
int i;
|
||||
|
||||
*lowp = *highp = TYPE_FIELD_BITPOS (type, 0);
|
||||
*lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
|
||||
for (i = 0; i < TYPE_NFIELDS (type); i++)
|
||||
{
|
||||
if (TYPE_FIELD_BITPOS (type, i) < *lowp)
|
||||
*lowp = TYPE_FIELD_BITPOS (type, i);
|
||||
if (TYPE_FIELD_BITPOS (type, i) > *highp)
|
||||
*highp = TYPE_FIELD_BITPOS (type, i);
|
||||
if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
|
||||
*lowp = TYPE_FIELD_ENUMVAL (type, i);
|
||||
if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
|
||||
*highp = TYPE_FIELD_ENUMVAL (type, i);
|
||||
}
|
||||
|
||||
/* Set unsigned indicator if warranted. */
|
||||
@@ -3197,10 +3197,15 @@ recursive_dump_type (struct type *type, int spaces)
|
||||
puts_filtered ("\n");
|
||||
for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
|
||||
{
|
||||
printfi_filtered (spaces + 2,
|
||||
"[%d] bitpos %d bitsize %d type ",
|
||||
idx, TYPE_FIELD_BITPOS (type, idx),
|
||||
TYPE_FIELD_BITSIZE (type, idx));
|
||||
if (TYPE_CODE (type) == TYPE_CODE_ENUM)
|
||||
printfi_filtered (spaces + 2,
|
||||
"[%d] enumval %s type ",
|
||||
idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
|
||||
else
|
||||
printfi_filtered (spaces + 2,
|
||||
"[%d] bitpos %d bitsize %d type ",
|
||||
idx, TYPE_FIELD_BITPOS (type, idx),
|
||||
TYPE_FIELD_BITSIZE (type, idx));
|
||||
gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
|
||||
printf_filtered (" name '%s' (",
|
||||
TYPE_FIELD_NAME (type, idx) != NULL
|
||||
@@ -3397,6 +3402,10 @@ copy_type_recursive (struct objfile *objfile,
|
||||
SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
|
||||
TYPE_FIELD_BITPOS (type, i));
|
||||
break;
|
||||
case FIELD_LOC_KIND_ENUMVAL:
|
||||
SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
|
||||
TYPE_FIELD_ENUMVAL (type, i));
|
||||
break;
|
||||
case FIELD_LOC_KIND_PHYSADDR:
|
||||
SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
|
||||
TYPE_FIELD_STATIC_PHYSADDR (type, i));
|
||||
|
||||
Reference in New Issue
Block a user