From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id 906C2389781F for ; Tue, 19 May 2020 18:44:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 906C2389781F X-ASG-Debug-ID: 1589913884-0c856e6d383d6f0001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id 4sbQhS66zNZb5d2X (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 19 May 2020 14:44:44 -0400 (EDT) X-Barracuda-Envelope-From: simon.marchi@efficios.com X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from epycamd.internal.efficios.com (192-222-181-218.qc.cable.ebox.net [192.222.181.218]) by smtp.ebox.ca (Postfix) with ESMTP id C56C5441B21; Tue, 19 May 2020 14:44:44 -0400 (EDT) From: Simon Marchi X-Barracuda-Effective-Source-IP: 192-222-181-218.qc.cable.ebox.net[192.222.181.218] X-Barracuda-Apparent-Source-IP: 192.222.181.218 X-Barracuda-RBL-IP: 192.222.181.218 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 4/4] gdb: remove TYPE_FIELDS macro Date: Tue, 19 May 2020 14:44:41 -0400 X-ASG-Orig-Subj: [PATCH 4/4] gdb: remove TYPE_FIELDS macro Message-Id: <20200519184441.7838-4-simon.marchi@efficios.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200519184441.7838-1-simon.marchi@efficios.com> References: <20200519184441.7838-1-simon.marchi@efficios.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1589913884 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-Scan-Msg-Size: 13742 X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.81963 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Spam-Status: No, score=-26.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 May 2020 18:44:48 -0000 Remove all uses of the `TYPE_FIELDS` macro. Replace them with either: 1) type::fields, to obtain a pointer to the fields array (same as TYPE_FIELDS yields) 2) type::field, a new convenience method that obtains a reference to one of the type's field by index. It is meant to replace TYPE_FIELDS (type)[idx] with type->field (idx) gdb/ChangeLog: * gdbtypes.h (struct type) : New method. (TYPE_FIELDS): Remove, replace all uses with either type::fields or type::field. --- gdb/ada-lang.c | 8 ++++---- gdb/c-typeprint.c | 2 +- gdb/dwarf2/read.c | 10 +++++----- gdb/eval.c | 2 +- gdb/gdbtypes.c | 14 +++++++------- gdb/gdbtypes.h | 14 +++++++++----- gdb/guile/scm-type.c | 2 +- gdb/iq2000-tdep.c | 2 +- gdb/mdebugread.c | 4 ++-- gdb/mips-tdep.c | 4 ++-- gdb/stabsread.c | 6 +++--- gdb/windows-tdep.c | 4 ++-- 12 files changed, 38 insertions(+), 34 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 1e6cc5f94a1..5af69f709fb 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -8247,7 +8247,7 @@ ada_template_to_fixed_record_type_1 (struct type *type, if (branch_type == NULL) { for (f = variant_field + 1; f < rtype->num_fields (); f += 1) - TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f]; + rtype->field (f - 1) = rtype->field (f); rtype->set_num_fields (rtype->num_fields () - 1); } else @@ -8360,7 +8360,7 @@ template_to_static_fixed_type (struct type *type0) field *fields = ((struct field *) TYPE_ALLOC (type, nfields * sizeof (struct field))); - memcpy (fields, TYPE_FIELDS (type0), + memcpy (fields, type0->fields (), sizeof (struct field) * nfields); type->set_fields (fields); @@ -8412,7 +8412,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr, field *fields = (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field)); - memcpy (fields, TYPE_FIELDS (type), sizeof (struct field) * nfields); + memcpy (fields, type->fields (), sizeof (struct field) * nfields); rtype->set_fields (fields); rtype->set_name (ada_type_name (type)); @@ -8432,7 +8432,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr, int f; for (f = variant_field + 1; f < nfields; f += 1) - TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f]; + rtype->field (f - 1) = rtype->field (f); rtype->set_num_fields (rtype->num_fields () - 1); } else diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 955cfd60451..29ac595cb25 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -277,7 +277,7 @@ cp_type_print_method_args (struct type *mtype, const char *prefix, enum language language, const struct type_print_options *flags) { - struct field *args = TYPE_FIELDS (mtype); + struct field *args = mtype->fields (); int nargs = mtype->num_fields (); int varargs = TYPE_VARARGS (mtype); int i; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 06cf60b3b3f..ef655ff109f 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -9422,7 +9422,7 @@ quirk_rust_enum (struct type *type, struct objfile *objfile) field *new_fields = (struct field *) TYPE_ZALLOC (type, ((type->num_fields () + 1) * sizeof (struct field))); - memcpy (new_fields + 1, TYPE_FIELDS (type), + memcpy (new_fields + 1, type->fields (), type->num_fields () * sizeof (struct field)); type->set_fields (new_fields); type->set_num_fields (type->num_fields () + 1); @@ -14966,7 +14966,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, of the method itself (TYPE_CODE_METHOD). */ smash_to_method_type (fnp->type, type, TYPE_TARGET_TYPE (this_type), - TYPE_FIELDS (this_type), + this_type->fields (), this_type->num_fields (), TYPE_VARARGS (this_type)); @@ -15183,7 +15183,7 @@ quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile) self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0)); new_type = alloc_type (objfile); smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type), - TYPE_FIELDS (pfn_type), pfn_type->num_fields (), + pfn_type->fields (), pfn_type->num_fields (), TYPE_VARARGS (pfn_type)); smash_to_methodptr_type (type, new_type); } @@ -15901,7 +15901,7 @@ update_enumeration_type_from_children (struct die_info *die, type->set_fields ((struct field *) TYPE_ALLOC (type, sizeof (struct field) * fields.size ())); - memcpy (TYPE_FIELDS (type), fields.data (), + memcpy (type->fields (), fields.data (), sizeof (struct field) * fields.size ()); } @@ -16687,7 +16687,7 @@ read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu) = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile); smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type), - TYPE_FIELDS (to_type), to_type->num_fields (), + to_type->fields (), to_type->num_fields (), TYPE_VARARGS (to_type)); type = lookup_methodptr_type (new_type); } diff --git a/gdb/eval.c b/gdb/eval.c index 069cf5ddbc4..3f23cebfb29 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -692,7 +692,7 @@ fake_method::fake_method (type_instance_flags flags, fake_method::~fake_method () { - xfree (TYPE_FIELDS (&m_type)); + xfree (m_type.fields ()); } /* Helper for evaluating an OP_VAR_VALUE. */ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index d1623457a13..96b75a00a92 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -2242,8 +2242,8 @@ resolve_dynamic_union (struct type *type, ((struct field *) TYPE_ALLOC (resolved_type, resolved_type->num_fields () * sizeof (struct field))); - memcpy (TYPE_FIELDS (resolved_type), - TYPE_FIELDS (type), + memcpy (resolved_type->fields (), + type->fields (), resolved_type->num_fields () * sizeof (struct field)); for (i = 0; i < resolved_type->num_fields (); ++i) { @@ -2453,8 +2453,8 @@ resolve_dynamic_struct (struct type *type, ((struct field *) TYPE_ALLOC (resolved_type, resolved_type->num_fields () * sizeof (struct field))); - memcpy (TYPE_FIELDS (resolved_type), - TYPE_FIELDS (type), + memcpy (resolved_type->fields (), + type->fields (), resolved_type->num_fields () * sizeof (struct field)); } @@ -5103,7 +5103,7 @@ recursive_dump_type (struct type *type, int spaces) } puts_filtered ("\n"); printfi_filtered (spaces, "nfields %d ", type->num_fields ()); - gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout); + gdb_print_host_address (type->fields (), gdb_stdout); puts_filtered ("\n"); for (idx = 0; idx < type->num_fields (); idx++) { @@ -5634,9 +5634,9 @@ append_composite_type_field_raw (struct type *t, const char *name, struct field *f; t->set_num_fields (t->num_fields () + 1); - t->set_fields (XRESIZEVEC (struct field, TYPE_FIELDS (t), + t->set_fields (XRESIZEVEC (struct field, t->fields (), t->num_fields ())); - f = &(TYPE_FIELDS (t)[t->num_fields () - 1]); + f = &t->field (t->num_fields () - 1); memset (f, 0, sizeof f[0]); FIELD_TYPE (f[0]) = field; FIELD_NAME (f[0]) = name; diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 3ed9f8e7fc1..f91adbc6cc2 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -914,13 +914,19 @@ struct type } /* Get the fields array of this type. */ - field *fields () const + struct field *fields () const { return this->main_type->flds_bnds.fields; } + /* Get the field at index IDX. */ + struct field &field (int idx) const + { + return this->fields ()[idx]; + } + /* Set the fields array of this type. */ - void set_fields (field *fields) + void set_fields (struct field *fields) { this->main_type->flds_bnds.fields = fields; } @@ -1470,8 +1476,6 @@ extern unsigned type_align (struct type *); space in struct type. */ extern bool set_type_align (struct type *, ULONGEST); -#define TYPE_FIELDS(thistype) (thistype)->fields () - #define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0) #define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds #define TYPE_LOW_BOUND(range_type) \ @@ -1667,7 +1671,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *); #define TYPE_FN_FIELD(thisfn, n) (thisfn)[n] #define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname #define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type -#define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type) +#define TYPE_FN_FIELD_ARGS(thisfn, n) (((thisfn)[n].type)->fields ()) #define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const) #define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile) #define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private) diff --git a/gdb/guile/scm-type.c b/gdb/guile/scm-type.c index b216087e778..e58f1474699 100644 --- a/gdb/guile/scm-type.c +++ b/gdb/guile/scm-type.c @@ -512,7 +512,7 @@ tyscm_field_smob_to_field (field_smob *f_smob) struct type *type = tyscm_field_smob_containing_type (f_smob); /* This should be non-NULL by construction. */ - gdb_assert (TYPE_FIELDS (type) != NULL); + gdb_assert (type->fields () != NULL); return &TYPE_FIELD (type, f_smob->field_num); } diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c index 18d207535b4..b35b45ea4c5 100644 --- a/gdb/iq2000-tdep.c +++ b/gdb/iq2000-tdep.c @@ -607,7 +607,7 @@ iq2000_pass_8bytetype_by_address (struct type *type) if (type->num_fields () != 1) return 1; /* Get field type. */ - ftype = (TYPE_FIELDS (type))[0].type; + ftype = type->field (0).type; /* The field type must have size 8, otherwise pass by address. */ if (TYPE_LENGTH (ftype) != 8) return 1; diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index aeecb14f19e..20fdd40d508 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -1233,8 +1233,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, case stMember: /* member of struct or union */ { - struct field *f - = &TYPE_FIELDS (top_stack->cur_type)[top_stack->cur_field++]; + struct field *f = &top_stack->cur_type->field (top_stack->cur_field); + top_stack->cur_field++; FIELD_NAME (*f) = name; SET_FIELD_BITPOS (*f, sh->value); bitsize = 0; diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index a3ab8c80e37..c602398506b 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -5247,7 +5247,7 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, struct value *function, : MIPS_V0_REGNUM); field < type->num_fields (); field++, regnum += 2) { - int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field]) + int offset = (FIELD_BITPOS (type->field (field)) / TARGET_CHAR_BIT); if (mips_debug) fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n", @@ -5799,7 +5799,7 @@ mips_o32_return_value (struct gdbarch *gdbarch, struct value *function, for (field = 0, regnum = mips_regnum (gdbarch)->fp0; field < type->num_fields (); field++, regnum += 2) { - int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field]) + int offset = (FIELD_BITPOS (type->fields ()[field]) / TARGET_CHAR_BIT); if (mips_debug) fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n", diff --git a/gdb/stabsread.c b/gdb/stabsread.c index e710a43b7a0..8d535294524 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -1840,7 +1840,7 @@ read_type (const char **pp, struct objfile *objfile) func_type->set_fields ((struct field *) TYPE_ALLOC (func_type, num_args * sizeof (struct field))); - memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field)); + memset (func_type->fields (), 0, num_args * sizeof (struct field)); { int i; struct type_list *t; @@ -3313,7 +3313,7 @@ attach_fields_to_type (struct stab_field_info *fip, struct type *type, type->set_fields ((struct field *) TYPE_ALLOC (type, sizeof (struct field) * nfields)); - memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields); + memset (type->fields (), 0, sizeof (struct field) * nfields); if (non_public_fields) { @@ -3660,7 +3660,7 @@ read_enum_type (const char **pp, struct type *type, type->set_fields ((struct field *) TYPE_ALLOC (type, sizeof (struct field) * nsyms)); - memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms); + memset (type->fields (), 0, sizeof (struct field) * nsyms); /* Find the symbols for the values and put them into the type. The symbols can be found in the symlist that we put them on diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index d7c498f2e93..6eec2577f38 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -752,8 +752,8 @@ create_enum (struct gdbarch *gdbarch, int bit, const char *name, type = arch_type (gdbarch, TYPE_CODE_ENUM, bit, name); type->set_num_fields (count); - TYPE_FIELDS (type) = (struct field *) - TYPE_ZALLOC (type, sizeof (struct field) * count); + type->set_fields + ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * count)); TYPE_UNSIGNED (type) = 1; for (i = 0; i < count; i++) -- 2.26.2