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
6 changed files with 32 additions and 27 deletions
|
@ -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>
|
2020-05-06 Simon Marchi <simon.marchi@efficios.com>
|
||||||
|
|
||||||
* gdbtypes.h (struct main_type) <flag_static>: Remove.
|
* 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);
|
= create_static_range_type (NULL, base_index_type, low, high);
|
||||||
struct type *slice_type = create_array_type_with_stride
|
struct type *slice_type = create_array_type_with_stride
|
||||||
(NULL, TYPE_TARGET_TYPE (type0), index_type,
|
(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));
|
TYPE_FIELD_BITSIZE (type0, 0));
|
||||||
int base_low = ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
|
int base_low = ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
|
||||||
LONGEST base_low_pos, low_pos;
|
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);
|
= create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
|
||||||
struct type *slice_type = create_array_type_with_stride
|
struct type *slice_type = create_array_type_with_stride
|
||||||
(NULL, TYPE_TARGET_TYPE (type), index_type,
|
(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));
|
TYPE_FIELD_BITSIZE (type, 0));
|
||||||
LONGEST low_pos, high_pos;
|
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,
|
struct ui_file *stream, int show, int level,
|
||||||
const struct type_print_options *flags)
|
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 != nullptr)
|
||||||
{
|
{
|
||||||
if (prop->kind == PROP_TYPE)
|
if (prop->kind == PROP_TYPE)
|
||||||
{
|
{
|
||||||
type = prop->data.original_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);
|
gdb_assert (prop->kind == PROP_VARIANT_PARTS);
|
||||||
print_record_field_types_dynamic (*prop->data.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);
|
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))
|
&& has_static_range (TYPE_RANGE_DATA (range_type))
|
||||||
&& (!type_not_associated (type)
|
&& (!type_not_associated (type)
|
||||||
&& !type_not_allocated (type)))
|
&& !type_not_allocated (type)))
|
||||||
|
@ -1957,7 +1957,7 @@ stub_noname_complaint (void)
|
||||||
static int
|
static int
|
||||||
array_type_has_dynamic_stride (struct type *type)
|
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);
|
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))
|
if (TYPE_ALLOCATED_PROP (type))
|
||||||
return 1;
|
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)
|
if (prop != nullptr && prop->kind != PROP_TYPE)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -2199,7 +2199,7 @@ resolve_dynamic_array_or_string (struct type *type,
|
||||||
else
|
else
|
||||||
elt_type = TYPE_TARGET_TYPE (type);
|
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 (prop != NULL)
|
||||||
{
|
{
|
||||||
if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
||||||
|
@ -2436,8 +2436,7 @@ resolve_dynamic_struct (struct type *type,
|
||||||
|
|
||||||
resolved_type = copy_type (type);
|
resolved_type = copy_type (type);
|
||||||
|
|
||||||
struct dynamic_prop *variant_prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS,
|
dynamic_prop *variant_prop = resolved_type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||||
resolved_type);
|
|
||||||
if (variant_prop != nullptr && variant_prop->kind == PROP_VARIANT_PARTS)
|
if (variant_prop != nullptr && variant_prop->kind == PROP_VARIANT_PARTS)
|
||||||
{
|
{
|
||||||
compute_variant_fields (type, resolved_type, addr_stack,
|
compute_variant_fields (type, resolved_type, addr_stack,
|
||||||
|
@ -2652,10 +2651,10 @@ resolve_dynamic_type (struct type *type,
|
||||||
|
|
||||||
/* See gdbtypes.h */
|
/* See gdbtypes.h */
|
||||||
|
|
||||||
struct dynamic_prop *
|
dynamic_prop *
|
||||||
get_dyn_prop (enum dynamic_prop_node_kind prop_kind, const struct type *type)
|
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)
|
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. */
|
/* * True if this type is allocatable. */
|
||||||
#define TYPE_IS_ALLOCATABLE(t) \
|
#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. */
|
/* * True if this type has variant parts. */
|
||||||
#define TYPE_HAS_VARIANT_PARTS(t) \
|
#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. */
|
/* * True if this type has a dynamic length. */
|
||||||
#define TYPE_HAS_DYNAMIC_LENGTH(t) \
|
#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
|
/* * Instruction-space delimited type. This is for Harvard architectures
|
||||||
which have separate instruction and data address spaces (and perhaps
|
which have separate instruction and data address spaces (and perhaps
|
||||||
|
@ -874,6 +874,10 @@ struct main_type
|
||||||
|
|
||||||
struct 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.
|
/* * Type that is a pointer to this type.
|
||||||
NULL if no such pointer-to type is known yet.
|
NULL if no such pointer-to type is known yet.
|
||||||
The debugger may add the address of such a type
|
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. */
|
/* Property accessors for the type data location. */
|
||||||
#define TYPE_DATA_LOCATION(thistype) \
|
#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) \
|
#define TYPE_DATA_LOCATION_BATON(thistype) \
|
||||||
TYPE_DATA_LOCATION (thistype)->data.baton
|
TYPE_DATA_LOCATION (thistype)->data.baton
|
||||||
#define TYPE_DATA_LOCATION_ADDR(thistype) \
|
#define TYPE_DATA_LOCATION_ADDR(thistype) \
|
||||||
|
@ -1441,13 +1445,13 @@ extern bool set_type_align (struct type *, ULONGEST);
|
||||||
#define TYPE_DATA_LOCATION_KIND(thistype) \
|
#define TYPE_DATA_LOCATION_KIND(thistype) \
|
||||||
TYPE_DATA_LOCATION (thistype)->kind
|
TYPE_DATA_LOCATION (thistype)->kind
|
||||||
#define TYPE_DYNAMIC_LENGTH(thistype) \
|
#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. */
|
/* Property accessors for the type allocated/associated. */
|
||||||
#define TYPE_ALLOCATED_PROP(thistype) \
|
#define TYPE_ALLOCATED_PROP(thistype) \
|
||||||
get_dyn_prop (DYN_PROP_ALLOCATED, thistype)
|
((thistype)->dyn_prop (DYN_PROP_ALLOCATED))
|
||||||
#define TYPE_ASSOCIATED_PROP(thistype) \
|
#define TYPE_ASSOCIATED_PROP(thistype) \
|
||||||
get_dyn_prop (DYN_PROP_ASSOCIATED, thistype)
|
((thistype)->dyn_prop (DYN_PROP_ASSOCIATED))
|
||||||
|
|
||||||
/* Attribute accessors for dynamic properties. */
|
/* Attribute accessors for dynamic properties. */
|
||||||
#define TYPE_DYN_PROP_LIST(thistype) \
|
#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. */
|
/* * Predicate if the type has dynamic values, which are not resolved yet. */
|
||||||
extern int is_dynamic_type (struct type *type);
|
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
|
/* * Given a dynamic property PROP of a given KIND, add this dynamic
|
||||||
property to the given TYPE.
|
property to the given TYPE.
|
||||||
|
|
||||||
|
|
|
@ -708,8 +708,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
|
||||||
if (is_enum)
|
if (is_enum)
|
||||||
{
|
{
|
||||||
fputs_filtered ("enum ", stream);
|
fputs_filtered ("enum ", stream);
|
||||||
struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_VARIANT_PARTS,
|
dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
|
||||||
type);
|
|
||||||
if (prop != nullptr && prop->kind == PROP_TYPE)
|
if (prop != nullptr && prop->kind == PROP_TYPE)
|
||||||
type = prop->data.original_type;
|
type = prop->data.original_type;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue