From 262abc0d67af006a709d0935940f9c9f5f7c5ee5 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 8 Jun 2020 15:25:50 -0400 Subject: gdb: add type::index_type / type::set_index_type Add the `index_type` and `set_index_type` methods on `struct type`, in order to remove the `TYPE_INDEX_TYPE` macro. In this patch, the `TYPE_INDEX_TYPE` macro is changed to use `type::index_type`, so all the call sites that are used to set the type's index type are changed to use `type::set_index_type`. The next patch will remove `TYPE_INDEX_TYPE` completely. gdb/ChangeLog: * gdbtypes.h (struct type) : New methods. (TYPE_INDEX_TYPE): Use type::index_type. * gdbtypes.c (create_array_type_with_stride): Likewise. Change-Id: I93bdca9de9f3e143d2ccea59310c63745315e18d --- gdb/ChangeLog | 7 +++++++ gdb/gdbtypes.c | 2 +- gdb/gdbtypes.h | 12 +++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0288053..6870b2c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-06-08 Simon Marchi + + * gdbtypes.h (struct type) : New + methods. + (TYPE_INDEX_TYPE): Use type::index_type. + * gdbtypes.c (create_array_type_with_stride): Likewise. + 2020-06-07 Tom Tromey * valprint.c (generic_val_print_float): Remove "embedded_offset" diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index fa90bd1..67fd3d2 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1293,7 +1293,7 @@ create_array_type_with_stride (struct type *result_type, result_type->set_num_fields (1); result_type->set_fields ((struct field *) TYPE_ZALLOC (result_type, sizeof (struct field))); - TYPE_INDEX_TYPE (result_type) = range_type; + result_type->set_index_type (range_type); if (byte_stride_prop != NULL) result_type->add_dyn_prop (DYN_PROP_BYTE_STRIDE, *byte_stride_prop); else if (bit_stride > 0) diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 47d79af..0cca0fd 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -933,6 +933,16 @@ struct type this->main_type->flds_bnds.fields = fields; } + type *index_type () const + { + return this->field (0).type; + } + + void set_index_type (type *index_type) + { + this->field (0).type = index_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; @@ -1482,7 +1492,7 @@ extern unsigned type_align (struct type *); space in struct type. */ extern bool set_type_align (struct type *, ULONGEST); -#define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0) +#define TYPE_INDEX_TYPE(type) ((type)->index_type ()) #define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds #define TYPE_LOW_BOUND(range_type) \ TYPE_RANGE_DATA(range_type)->low.data.const_val -- cgit v1.1