diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2020-05-07 11:32:25 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-05-07 11:32:25 -0400 |
commit | 24e99c6c3c78e38a9919c9f8e8b831713f8303a3 (patch) | |
tree | 60b31873f58a3656645f3005f06be2a008dc02c4 | |
parent | d11a9fabab657e592df9167535bc46804937cf18 (diff) | |
download | gdb-24e99c6c3c78e38a9919c9f8e8b831713f8303a3.zip gdb-24e99c6c3c78e38a9919c9f8e8b831713f8303a3.tar.gz gdb-24e99c6c3c78e38a9919c9f8e8b831713f8303a3.tar.bz2 |
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/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/ada-lang.c | 4 | ||||
-rw-r--r-- | gdb/ada-typeprint.c | 4 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 17 | ||||
-rw-r--r-- | gdb/gdbtypes.h | 23 | ||||
-rw-r--r-- | gdb/rust-lang.c | 3 |
6 files changed, 32 insertions, 27 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1eb8c11..e295fd1 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 bfbc690..be26231 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 83972fe..7ef8bd5 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 9a6a6dd..715db07 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 d9bfa56..2845b71 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 20661e4..f2fb011 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; } |