mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
gdb: make get_dyn_prop a method of struct type
Move get_dyn_prop, currently a free function, to be a method on struct type. gdb/ChangeLog: * gdbtypes.h (struct type) <get_dyn_prop>: New method. (get_dyn_prop): Remove. Update all users to use type::dyn_prop. * gdbtypes.c (get_dyn_prop): Rename to... (type::dyn_prop): ... this.
This commit is contained in:
parent
d11a9fabab
commit
24e99c6c3c
@ -1,3 +1,11 @@
|
||||
2020-05-07 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* gdbtypes.h (struct type) <get_dyn_prop>: New method.
|
||||
(get_dyn_prop): Remove. Update all users to use
|
||||
type::dyn_prop.
|
||||
* gdbtypes.c (get_dyn_prop): Rename to...
|
||||
(type::dyn_prop): ... this.
|
||||
|
||||
2020-05-06 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* gdbtypes.h (struct main_type) <flag_static>: Remove.
|
||||
|
@ -2812,7 +2812,7 @@ ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
|
||||
= create_static_range_type (NULL, base_index_type, low, high);
|
||||
struct type *slice_type = create_array_type_with_stride
|
||||
(NULL, TYPE_TARGET_TYPE (type0), index_type,
|
||||
get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
|
||||
type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
|
||||
TYPE_FIELD_BITSIZE (type0, 0));
|
||||
int base_low = ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
|
||||
LONGEST base_low_pos, low_pos;
|
||||
@ -2842,7 +2842,7 @@ ada_value_slice (struct value *array, int low, int high)
|
||||
= create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
|
||||
struct type *slice_type = create_array_type_with_stride
|
||||
(NULL, TYPE_TARGET_TYPE (type), index_type,
|
||||
get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
|
||||
type->dyn_prop (DYN_PROP_BYTE_STRIDE),
|
||||
TYPE_FIELD_BITSIZE (type, 0));
|
||||
LONGEST low_pos, high_pos;
|
||||
|
||||
|
@ -776,13 +776,13 @@ print_record_field_types (struct type *type, struct type *outer_type,
|
||||
struct ui_file *stream, int show, int level,
|
||||
const struct type_print_options *flags)
|
||||
{
|
||||
struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS, type);
|
||||
struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||
if (prop != nullptr)
|
||||
{
|
||||
if (prop->kind == PROP_TYPE)
|
||||
{
|
||||
type = prop->data.original_type;
|
||||
prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS, type);
|
||||
prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||
}
|
||||
gdb_assert (prop->kind == PROP_VARIANT_PARTS);
|
||||
print_record_field_types_dynamic (*prop->data.variant_parts,
|
||||
|
@ -1188,7 +1188,7 @@ update_static_array_size (struct type *type)
|
||||
|
||||
struct type *range_type = TYPE_INDEX_TYPE (type);
|
||||
|
||||
if (get_dyn_prop (DYN_PROP_BYTE_STRIDE, type) == nullptr
|
||||
if (type->dyn_prop (DYN_PROP_BYTE_STRIDE) == nullptr
|
||||
&& has_static_range (TYPE_RANGE_DATA (range_type))
|
||||
&& (!type_not_associated (type)
|
||||
&& !type_not_allocated (type)))
|
||||
@ -1957,7 +1957,7 @@ stub_noname_complaint (void)
|
||||
static int
|
||||
array_type_has_dynamic_stride (struct type *type)
|
||||
{
|
||||
struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
|
||||
struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
|
||||
|
||||
return (prop != NULL && prop->kind != PROP_CONST);
|
||||
}
|
||||
@ -1990,7 +1990,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
|
||||
if (TYPE_ALLOCATED_PROP (type))
|
||||
return 1;
|
||||
|
||||
struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS, type);
|
||||
struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||
if (prop != nullptr && prop->kind != PROP_TYPE)
|
||||
return 1;
|
||||
|
||||
@ -2199,7 +2199,7 @@ resolve_dynamic_array_or_string (struct type *type,
|
||||
else
|
||||
elt_type = TYPE_TARGET_TYPE (type);
|
||||
|
||||
prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
|
||||
prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
|
||||
if (prop != NULL)
|
||||
{
|
||||
if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
||||
@ -2436,8 +2436,7 @@ resolve_dynamic_struct (struct type *type,
|
||||
|
||||
resolved_type = copy_type (type);
|
||||
|
||||
struct dynamic_prop *variant_prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS,
|
||||
resolved_type);
|
||||
dynamic_prop *variant_prop = resolved_type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||
if (variant_prop != nullptr && variant_prop->kind == PROP_VARIANT_PARTS)
|
||||
{
|
||||
compute_variant_fields (type, resolved_type, addr_stack,
|
||||
@ -2652,10 +2651,10 @@ resolve_dynamic_type (struct type *type,
|
||||
|
||||
/* See gdbtypes.h */
|
||||
|
||||
struct dynamic_prop *
|
||||
get_dyn_prop (enum dynamic_prop_node_kind prop_kind, const struct type *type)
|
||||
dynamic_prop *
|
||||
type::dyn_prop (dynamic_prop_node_kind prop_kind) const
|
||||
{
|
||||
struct dynamic_prop_list *node = TYPE_DYN_PROP_LIST (type);
|
||||
dynamic_prop_list *node = TYPE_DYN_PROP_LIST (this);
|
||||
|
||||
while (node != NULL)
|
||||
{
|
||||
|
@ -339,15 +339,15 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
|
||||
|
||||
/* * True if this type is allocatable. */
|
||||
#define TYPE_IS_ALLOCATABLE(t) \
|
||||
(get_dyn_prop (DYN_PROP_ALLOCATED, t) != NULL)
|
||||
((t)->dyn_prop (DYN_PROP_ALLOCATED) != NULL)
|
||||
|
||||
/* * True if this type has variant parts. */
|
||||
#define TYPE_HAS_VARIANT_PARTS(t) \
|
||||
(get_dyn_prop (DYN_PROP_VARIANT_PARTS, t) != nullptr)
|
||||
((t)->dyn_prop (DYN_PROP_VARIANT_PARTS) != nullptr)
|
||||
|
||||
/* * True if this type has a dynamic length. */
|
||||
#define TYPE_HAS_DYNAMIC_LENGTH(t) \
|
||||
(get_dyn_prop (DYN_PROP_BYTE_SIZE, t) != nullptr)
|
||||
((t)->dyn_prop (DYN_PROP_BYTE_SIZE) != nullptr)
|
||||
|
||||
/* * Instruction-space delimited type. This is for Harvard architectures
|
||||
which have separate instruction and data address spaces (and perhaps
|
||||
@ -874,6 +874,10 @@ struct main_type
|
||||
|
||||
struct type
|
||||
{
|
||||
/* * Return the dynamic property of the requested KIND from this type's
|
||||
list of dynamic properties. */
|
||||
dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;
|
||||
|
||||
/* * Type that is a pointer to this type.
|
||||
NULL if no such pointer-to type is known yet.
|
||||
The debugger may add the address of such a type
|
||||
@ -1433,7 +1437,7 @@ extern bool set_type_align (struct type *, ULONGEST);
|
||||
|
||||
/* Property accessors for the type data location. */
|
||||
#define TYPE_DATA_LOCATION(thistype) \
|
||||
get_dyn_prop (DYN_PROP_DATA_LOCATION, thistype)
|
||||
((thistype)->dyn_prop (DYN_PROP_DATA_LOCATION))
|
||||
#define TYPE_DATA_LOCATION_BATON(thistype) \
|
||||
TYPE_DATA_LOCATION (thistype)->data.baton
|
||||
#define TYPE_DATA_LOCATION_ADDR(thistype) \
|
||||
@ -1441,13 +1445,13 @@ extern bool set_type_align (struct type *, ULONGEST);
|
||||
#define TYPE_DATA_LOCATION_KIND(thistype) \
|
||||
TYPE_DATA_LOCATION (thistype)->kind
|
||||
#define TYPE_DYNAMIC_LENGTH(thistype) \
|
||||
get_dyn_prop (DYN_PROP_BYTE_SIZE, thistype)
|
||||
((thistype)->dyn_prop (DYN_PROP_BYTE_SIZE))
|
||||
|
||||
/* Property accessors for the type allocated/associated. */
|
||||
#define TYPE_ALLOCATED_PROP(thistype) \
|
||||
get_dyn_prop (DYN_PROP_ALLOCATED, thistype)
|
||||
((thistype)->dyn_prop (DYN_PROP_ALLOCATED))
|
||||
#define TYPE_ASSOCIATED_PROP(thistype) \
|
||||
get_dyn_prop (DYN_PROP_ASSOCIATED, thistype)
|
||||
((thistype)->dyn_prop (DYN_PROP_ASSOCIATED))
|
||||
|
||||
/* Attribute accessors for dynamic properties. */
|
||||
#define TYPE_DYN_PROP_LIST(thistype) \
|
||||
@ -2093,11 +2097,6 @@ extern struct type *resolve_dynamic_type
|
||||
/* * Predicate if the type has dynamic values, which are not resolved yet. */
|
||||
extern int is_dynamic_type (struct type *type);
|
||||
|
||||
/* * Return the dynamic property of the requested KIND from TYPE's
|
||||
list of dynamic properties. */
|
||||
extern struct dynamic_prop *get_dyn_prop
|
||||
(enum dynamic_prop_node_kind kind, const struct type *type);
|
||||
|
||||
/* * Given a dynamic property PROP of a given KIND, add this dynamic
|
||||
property to the given TYPE.
|
||||
|
||||
|
@ -708,8 +708,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
|
||||
if (is_enum)
|
||||
{
|
||||
fputs_filtered ("enum ", stream);
|
||||
struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS,
|
||||
type);
|
||||
dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||
if (prop != nullptr && prop->kind == PROP_TYPE)
|
||||
type = prop->data.original_type;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user