From 454977cdc414ebdb45cda0072b26569fd387d659 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 31 Aug 2023 11:46:24 -0400 Subject: [PATCH] gdb: remove TYPE_FIELD_ARTIFICIAL Replace with type::field + field::is_artificial. Change-Id: Ie3bacae49d9bd02e83e504c1ce01470aba56a081 Approved-By: Tom Tromey --- gdb/c-typeprint.c | 4 ++-- gdb/c-varobj.c | 4 ++-- gdb/compile/compile-cplus-types.c | 4 ++-- gdb/dwarf2/read.c | 8 ++++---- gdb/f-lang.c | 2 +- gdb/gdbtypes.c | 2 +- gdb/gdbtypes.h | 1 - gdb/i386-windows-tdep.c | 2 +- gdb/python/py-type.c | 2 +- gdb/rust-lang.c | 6 +++--- gdb/valops.c | 4 ++-- 11 files changed, 19 insertions(+), 20 deletions(-) diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 57b2c09be8b..a23ceb0ddc4 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -535,7 +535,7 @@ c_type_print_args (struct type *type, struct ui_file *stream, { struct type *param_type; - if (TYPE_FIELD_ARTIFICIAL (type, i) && linkage_name) + if (type->field (i).is_artificial () && linkage_name) continue; if (printed_any) @@ -1102,7 +1102,7 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream, virtual table pointers are not specifically marked in the debug info, they should be artificial. */ if ((i == vptr_fieldno && type == basetype) - || TYPE_FIELD_ARTIFICIAL (type, i)) + || type->field (i).is_artificial ()) continue; if (need_access_label) diff --git a/gdb/c-varobj.c b/gdb/c-varobj.c index 87eca6b069a..b00a2345e2c 100644 --- a/gdb/c-varobj.c +++ b/gdb/c-varobj.c @@ -651,7 +651,7 @@ cplus_class_num_children (struct type *type, int children[3]) table pointers are not specifically marked in the debug info, they should be artificial. */ if ((type == basetype && i == vptr_fieldno) - || TYPE_FIELD_ARTIFICIAL (type, i)) + || type->field (i).is_artificial ()) continue; if (TYPE_FIELD_PROTECTED (type, i)) @@ -751,7 +751,7 @@ cplus_describe_child (const struct varobj *parent, int index, while (index >= 0) { if ((type == basetype && type_index == vptr_fieldno) - || TYPE_FIELD_ARTIFICIAL (type, type_index)) + || type->field (type_index).is_artificial ()) ; /* ignore vptr */ else if (match_accessibility (type, type_index, acc)) --index; diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c index d8e305f237a..cea04b74d10 100644 --- a/gdb/compile/compile-cplus-types.c +++ b/gdb/compile/compile-cplus-types.c @@ -584,7 +584,7 @@ compile_cplus_convert_struct_or_union_members const char *field_name = type->field (i).name (); if (TYPE_FIELD_IGNORE (type, i) - || TYPE_FIELD_ARTIFICIAL (type, i)) + || type->field (i).is_artificial ()) continue; /* GDB records unnamed/anonymous fields with empty string names. */ @@ -982,7 +982,7 @@ compile_cplus_convert_func (compile_cplus_instance *instance, int artificials = 0; for (int i = 0; i < type->num_fields (); ++i) { - if (strip_artificial && TYPE_FIELD_ARTIFICIAL (type, i)) + if (strip_artificial && type->field (i).is_artificial ()) { --array.n_elements; ++artificials; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 63b099c111b..25e8034397a 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -7066,7 +7066,7 @@ dwarf2_compute_name (const char *name, artificial; there is no way to differentiate the two cases. */ if (type->num_fields () > 0 - && TYPE_FIELD_ARTIFICIAL (type, 0) + && type->field (0).is_artificial () && type->field (0).type ()->code () == TYPE_CODE_PTR && TYPE_CONST (type->field (0).type ()->target_type ())) buf.puts (" const"); @@ -12239,7 +12239,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, parameter for non-static member functions (which is the this pointer) as artificial. We obtain this information from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */ - if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0) + if (nparams == 0 || this_type->field (0).is_artificial () == 0) fnp->voffset = VOFFSET_STATIC; } else @@ -12328,7 +12328,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, we cannot actually find a base class context for the vtable! */ if (this_type->num_fields () == 0 - || !TYPE_FIELD_ARTIFICIAL (this_type, 0)) + || !this_type->field (0).is_artificial ()) { complaint (_("cannot determine context for virtual member " "function \"%s\" (offset %s)"), @@ -14723,7 +14723,7 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) but not in the class specifications (GCC PR 43053). */ if (cu->lang () == language_cplus && !TYPE_CONST (arg_type) - && TYPE_FIELD_ARTIFICIAL (ftype, iparams)) + && ftype->field (iparams).is_artificial ()) { int is_this = 0; struct dwarf2_cu *arg_cu = cu; diff --git a/gdb/f-lang.c b/gdb/f-lang.c index bb177007303..fc0614e5761 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -1932,7 +1932,7 @@ fortran_prepare_argument (struct expression *exp, bool is_artificial = ((arg_num >= func_type->num_fields ()) ? true - : TYPE_FIELD_ARTIFICIAL (func_type, arg_num)); + : func_type->field (arg_num).is_artificial ()); /* If this is an artificial argument, then either, this is an argument beyond the end of the known arguments, or possibly, there are no known diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 076a0817b26..0f0638e7bd7 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -5542,7 +5542,7 @@ copy_type_recursive (struct type *type, htab_t copied_types) for (i = 0; i < nfields; i++) { new_type->field (i).set_is_artificial - (TYPE_FIELD_ARTIFICIAL (type, i)); + (type->field (i).is_artificial ()); TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i); if (type->field (i).type ()) new_type->field (i).set_type diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 9aa4a5c8a85..be65669ac5f 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -1925,7 +1925,6 @@ extern void set_type_vptr_basetype (struct type *, struct type *); #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize) -#define TYPE_FIELD_ARTIFICIAL(thistype, n) ((thistype)->field (n).is_artificial ()) #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE((thistype)->field (n)) #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE((thistype)->field (n))!=0) diff --git a/gdb/i386-windows-tdep.c b/gdb/i386-windows-tdep.c index 686004a5d32..a5fe5dc8a1c 100644 --- a/gdb/i386-windows-tdep.c +++ b/gdb/i386-windows-tdep.c @@ -122,7 +122,7 @@ i386_windows_push_dummy_call (struct gdbarch *gdbarch, struct value *function, artificial flag of the first parameter ('this' pointer). */ if (type->code () == TYPE_CODE_METHOD && type->num_fields () > 0 - && TYPE_FIELD_ARTIFICIAL (type, 0) + && type->field (0).is_artificial () && type->field (0).type ()->code () == TYPE_CODE_PTR) thiscall = 1; diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index b60875c792e..9933bb378b5 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -197,7 +197,7 @@ convert_field (struct type *type, int field) if (PyObject_SetAttrString (result.get (), "name", arg.get ()) < 0) return NULL; - arg.reset (PyBool_FromLong (TYPE_FIELD_ARTIFICIAL (type, field))); + arg.reset (PyBool_FromLong (type->field (field).is_artificial ())); if (PyObject_SetAttrString (result.get (), "artificial", arg.get ()) < 0) return NULL; diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 27e8069f148..0b4a7d47c95 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -93,7 +93,7 @@ rust_enum_variant (struct type *type) { /* The active variant is simply the first non-artificial field. */ for (int i = 0; i < type->num_fields (); ++i) - if (!TYPE_FIELD_ARTIFICIAL (type, i)) + if (!type->field (i).is_artificial ()) return i; /* Perhaps we could get here by trying to print an Ada variant @@ -724,7 +724,7 @@ rust_print_struct_def (struct type *type, const char *varstring, { if (type->field (i).is_static ()) continue; - if (is_enum && TYPE_FIELD_ARTIFICIAL (type, i)) + if (is_enum && type->field (i).is_artificial ()) continue; fields.push_back (i); } @@ -741,7 +741,7 @@ rust_print_struct_def (struct type *type, const char *varstring, QUIT; gdb_assert (!type->field (i).is_static ()); - gdb_assert (! (is_enum && TYPE_FIELD_ARTIFICIAL (type, i))); + gdb_assert (! (is_enum && type->field (i).is_artificial ())); if (flags->print_offsets) podata->update (type, i, stream); diff --git a/gdb/valops.c b/gdb/valops.c index 6404091d451..b007fe08d34 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -3464,7 +3464,7 @@ compare_parameters (struct type *t1, struct type *t2, int skip_artificial) { int start = 0; - if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0)) + if (t1->num_fields () > 0 && t1->field (0).is_artificial ()) ++start; /* If skipping artificial fields, find the first real field @@ -3472,7 +3472,7 @@ compare_parameters (struct type *t1, struct type *t2, int skip_artificial) if (skip_artificial) { while (start < t1->num_fields () - && TYPE_FIELD_ARTIFICIAL (t1, start)) + && t1->field (start).is_artificial ()) ++start; } -- 2.30.2