diff options
Diffstat (limited to 'gdb/gdbtypes.c')
-rw-r--r-- | gdb/gdbtypes.c | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 45d62b7..b57353d 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -578,11 +578,11 @@ lookup_function_type_with_arguments (struct type *type, /* Identify address space identifier by name -- return the integer flag defined in gdbtypes.h. */ -int +type_instance_flags address_space_name_to_int (struct gdbarch *gdbarch, const char *space_identifier) { - int type_flags; + type_instance_flags type_flags; /* Check for known address space delimiters. */ if (!strcmp (space_identifier, "code")) @@ -602,7 +602,8 @@ address_space_name_to_int (struct gdbarch *gdbarch, gdbtypes.h -- return the string version of the adress space name. */ const char * -address_space_int_to_name (struct gdbarch *gdbarch, int space_flag) +address_space_int_to_name (struct gdbarch *gdbarch, + type_instance_flags space_flag) { if (space_flag & TYPE_INSTANCE_FLAG_CODE_SPACE) return "code"; @@ -621,7 +622,7 @@ address_space_int_to_name (struct gdbarch *gdbarch, int space_flag) STORAGE must be in the same obstack as TYPE. */ static struct type * -make_qualified_type (struct type *type, int new_flags, +make_qualified_type (struct type *type, type_instance_flags new_flags, struct type *storage) { struct type *ntype; @@ -661,7 +662,7 @@ make_qualified_type (struct type *type, int new_flags, TYPE_CHAIN (type) = ntype; /* Now set the instance flags and return the new type. */ - TYPE_INSTANCE_FLAGS (ntype) = new_flags; + ntype->set_instance_flags (new_flags); /* Set length of new type to that of the original type. */ TYPE_LENGTH (ntype) = TYPE_LENGTH (type); @@ -679,13 +680,14 @@ make_qualified_type (struct type *type, int new_flags, representations. */ struct type * -make_type_with_address_space (struct type *type, int space_flag) +make_type_with_address_space (struct type *type, + type_instance_flags space_flag) { - int new_flags = ((TYPE_INSTANCE_FLAGS (type) - & ~(TYPE_INSTANCE_FLAG_CODE_SPACE - | TYPE_INSTANCE_FLAG_DATA_SPACE - | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)) - | space_flag); + type_instance_flags new_flags = ((type->instance_flags () + & ~(TYPE_INSTANCE_FLAG_CODE_SPACE + | TYPE_INSTANCE_FLAG_DATA_SPACE + | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)) + | space_flag); return make_qualified_type (type, new_flags, NULL); } @@ -709,9 +711,9 @@ make_cv_type (int cnst, int voltl, { struct type *ntype; /* New type */ - int new_flags = (TYPE_INSTANCE_FLAGS (type) - & ~(TYPE_INSTANCE_FLAG_CONST - | TYPE_INSTANCE_FLAG_VOLATILE)); + type_instance_flags new_flags = (type->instance_flags () + & ~(TYPE_INSTANCE_FLAG_CONST + | TYPE_INSTANCE_FLAG_VOLATILE)); if (cnst) new_flags |= TYPE_INSTANCE_FLAG_CONST; @@ -1412,7 +1414,6 @@ void make_vector_type (struct type *array_type) { struct type *inner_array, *elt_type; - int flags; /* Find the innermost array type, in case the array is multi-dimensional. */ @@ -1423,7 +1424,8 @@ make_vector_type (struct type *array_type) elt_type = TYPE_TARGET_TYPE (inner_array); if (elt_type->code () == TYPE_CODE_INT) { - flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT; + type_instance_flags flags + = elt_type->instance_flags () | TYPE_INSTANCE_FLAG_NOTTEXT; elt_type = make_qualified_type (elt_type, flags, NULL); TYPE_TARGET_TYPE (inner_array) = elt_type; } @@ -2734,12 +2736,13 @@ struct type * check_typedef (struct type *type) { struct type *orig_type = type; - /* While we're removing typedefs, we don't want to lose qualifiers. - E.g., const/volatile. */ - int instance_flags = TYPE_INSTANCE_FLAGS (type); gdb_assert (type); + /* While we're removing typedefs, we don't want to lose qualifiers. + E.g., const/volatile. */ + type_instance_flags instance_flags = type->instance_flags (); + while (type->code () == TYPE_CODE_TYPEDEF) { if (!TYPE_TARGET_TYPE (type)) @@ -2780,10 +2783,13 @@ check_typedef (struct type *type) outer cast in a chain of casting win), instead of assuming "it can't happen". */ { - const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE - | TYPE_INSTANCE_FLAG_DATA_SPACE); - const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL; - int new_instance_flags = TYPE_INSTANCE_FLAGS (type); + const type_instance_flags ALL_SPACES + = (TYPE_INSTANCE_FLAG_CODE_SPACE + | TYPE_INSTANCE_FLAG_DATA_SPACE); + const type_instance_flags ALL_CLASSES + = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL; + + type_instance_flags new_instance_flags = type->instance_flags (); /* Treat code vs data spaces and address classes separately. */ if ((instance_flags & ALL_SPACES) != 0) @@ -5028,7 +5034,7 @@ recursive_dump_type (struct type *type, int spaces) gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout); printf_filtered ("\n"); printfi_filtered (spaces, "instance_flags 0x%x", - TYPE_INSTANCE_FLAGS (type)); + (unsigned) type->instance_flags ()); if (TYPE_CONST (type)) { puts_filtered (" TYPE_CONST"); @@ -5302,7 +5308,7 @@ copy_type_recursive (struct objfile *objfile, if (type->name ()) new_type->set_name (xstrdup (type->name ())); - TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type); + new_type->set_instance_flags (type->instance_flags ()); TYPE_LENGTH (new_type) = TYPE_LENGTH (type); /* Copy the fields. */ @@ -5429,7 +5435,7 @@ copy_type (const struct type *type) gdb_assert (TYPE_OBJFILE_OWNED (type)); new_type = alloc_type_copy (type); - TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type); + new_type->set_instance_flags (type->instance_flags ()); TYPE_LENGTH (new_type) = TYPE_LENGTH (type); memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type), sizeof (struct main_type)); @@ -5822,10 +5828,14 @@ gdbtypes_post_init (struct gdbarch *gdbarch) = arch_integer_type (gdbarch, 128, 0, "int128_t"); builtin_type->builtin_uint128 = arch_integer_type (gdbarch, 128, 1, "uint128_t"); - TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |= - TYPE_INSTANCE_FLAG_NOTTEXT; - TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |= - TYPE_INSTANCE_FLAG_NOTTEXT; + + builtin_type->builtin_int8->set_instance_flags + (builtin_type->builtin_int8->instance_flags () + | TYPE_INSTANCE_FLAG_NOTTEXT); + + builtin_type->builtin_uint8->set_instance_flags + (builtin_type->builtin_uint8->instance_flags () + | TYPE_INSTANCE_FLAG_NOTTEXT); /* Wide character types. */ builtin_type->builtin_char16 |