summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2020-05-07 11:32:25 -0400
committerSimon Marchi <simon.marchi@efficios.com>2020-05-07 11:32:25 -0400
commit24e99c6c3c78e38a9919c9f8e8b831713f8303a3 (patch)
tree60b31873f58a3656645f3005f06be2a008dc02c4
parentd11a9fabab657e592df9167535bc46804937cf18 (diff)
downloadbinutils-gdb-24e99c6c3c78e38a9919c9f8e8b831713f8303a3.tar.gz
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.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/ada-lang.c4
-rw-r--r--gdb/ada-typeprint.c4
-rw-r--r--gdb/gdbtypes.c17
-rw-r--r--gdb/gdbtypes.h23
-rw-r--r--gdb/rust-lang.c3
6 files changed, 32 insertions, 27 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1eb8c111c69..e295fd1d65a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index bfbc69084ec..be26231524d 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -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;
diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c
index 83972fe125d..7ef8bd5ef9e 100644
--- a/gdb/ada-typeprint.c
+++ b/gdb/ada-typeprint.c
@@ -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,
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 9a6a6dd74b1..715db0772b7 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -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)
{
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index d9bfa56cc45..2845b71906a 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -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.
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index 20661e48d96..f2fb0119b00 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -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;
}