gdb: add type::target_is_stub / type::set_target_is_stub
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:07:59 +0000 (11:07 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:07:59 +0000 (11:07 -0400)
Add the `target_is_stub` and `set_target_is_stub` methods on `struct
type`, in order to remove the `TYPE_TARGET_STUB` macro.  In this patch,
the macro is changed to use the getter, so all the call sites of the
macro that are used as a setter are changed to use the setter method
directly.  The next patch will remove the macro completely.

gdb/ChangeLog:

* gdbtypes.h (struct type) <target_is_stub, set_target_is_stub>:
New methods.
(TYPE_TARGET_STUB): Use type::is_stub, change all write call
sites to use type::set_target_is_stub.

Change-Id: I9c71a89adc7ae8d018db9ee156f41c623be0484a

gdb/ChangeLog
gdb/ctfread.c
gdb/dwarf2/read.c
gdb/fbsd-tdep.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/linux-tdep.c
gdb/mdebugread.c
gdb/stabsread.c

index aac62fceb0fd79dff6bc5d02235c6409f2b39305..644d70038d014ea77ab5f1e07ed690fcd8d908f3 100644 (file)
@@ -1,3 +1,10 @@
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+       * gdbtypes.h (struct type) <target_is_stub, set_target_is_stub>:
+       New methods.
+       (TYPE_TARGET_STUB): Use type::is_stub, change all write call
+       sites to use type::set_target_is_stub.
+
 2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdbtypes.h (TYPE_STUB): Remove, replace all
index 14f64047fc16b2d4e86f1cb0980fe7a25b6471f8..81490baecc1f0db01c7281037fa9585455d4809a 100644 (file)
@@ -776,7 +776,7 @@ read_array_type (struct ctf_context *ccp, ctf_id_t tid)
     {
       range_type->bounds ()->high.set_undefined ();
       TYPE_LENGTH (type) = 0;
-      TYPE_TARGET_STUB (type) = 1;
+      type->set_target_is_stub (true);
     }
   else
     TYPE_LENGTH (type) = ctf_type_size (fp, tid);
@@ -876,7 +876,8 @@ read_typedef_type (struct ctf_context *ccp, ctf_id_t tid,
     TYPE_TARGET_TYPE (this_type) = target_type;
   else
     TYPE_TARGET_TYPE (this_type) = NULL;
-  TYPE_TARGET_STUB (this_type) = TYPE_TARGET_TYPE (this_type) ? 1 : 0;
+
+  this_type->set_target_is_stub (TYPE_TARGET_TYPE (this_type) != nullptr);
 
   return set_tid_type (objfile, tid, this_type);
 }
index b93583313866dfd59ffb98041fb99d2f9091f9b5..5f02acc01cb9c083b6dfa5f171fc79c27045d259 100644 (file)
@@ -17795,7 +17795,7 @@ read_typedef (struct die_info *die, struct dwarf2_cu *cu)
 
   name = dwarf2_full_name (NULL, die, cu);
   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
-  TYPE_TARGET_STUB (this_type) = 1;
+  this_type->set_target_is_stub (true);
   set_die_type (die, this_type, cu);
   target_type = die_type (die, cu);
   if (target_type != this_type)
index ca397fa8e0f7e9ceaecd08fbb589cc044e4c2cc8..a462e4d4ee2fc83c7703b21033318a75e2a86aa7 100644 (file)
@@ -1643,14 +1643,14 @@ fbsd_get_siginfo_type (struct gdbarch *gdbarch)
   pid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
                        TYPE_LENGTH (int32_type) * TARGET_CHAR_BIT, "__pid_t");
   TYPE_TARGET_TYPE (pid_type) = int32_type;
-  TYPE_TARGET_STUB (pid_type) = 1;
+  pid_type->set_target_is_stub (true);
 
   /* __uid_t */
   uid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
                        TYPE_LENGTH (uint32_type) * TARGET_CHAR_BIT,
                        "__uid_t");
   TYPE_TARGET_TYPE (uid_type) = uint32_type;
-  TYPE_TARGET_STUB (uid_type) = 1;
+  pid_type->set_target_is_stub (true);
 
   /* _reason */
   reason_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
index 492061fa0a4f96f43df9bc2d220ab95bb6000a98..6dc073fb5ae015a8007d6e3a80f0906120d9ac48 100644 (file)
@@ -935,7 +935,7 @@ create_range_type (struct type *result_type, struct type *index_type,
   result_type->set_code (TYPE_CODE_RANGE);
   TYPE_TARGET_TYPE (result_type) = index_type;
   if (index_type->is_stub ())
-    TYPE_TARGET_STUB (result_type) = 1;
+    result_type->set_target_is_stub (true);
   else
     TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
 
@@ -1307,7 +1307,7 @@ create_array_type_with_stride (struct type *result_type,
 
   /* TYPE_TARGET_STUB will take care of zero length arrays.  */
   if (TYPE_LENGTH (result_type) == 0)
-    TYPE_TARGET_STUB (result_type) = 1;
+    result_type->set_target_is_stub (true);
 
   return result_type;
 }
@@ -2875,11 +2875,11 @@ check_typedef (struct type *type)
       else if (type->code () == TYPE_CODE_RANGE)
        {
          TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
-         TYPE_TARGET_STUB (type) = 0;
+         type->set_target_is_stub (false);
        }
       else if (type->code () == TYPE_CODE_ARRAY
               && update_static_array_size (type))
-       TYPE_TARGET_STUB (type) = 0;
+       type->set_target_is_stub (false);
     }
 
   type = make_qualified_type (type, instance_flags, NULL);
index bceb1b876058b3a4302b0a8bdcfd14eb988aa972..c6c25183609c294c3c4cd568f56531f27f656caa 100644 (file)
@@ -222,7 +222,7 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
    based on the TYPE_LENGTH of the target type.  Also, set for
    TYPE_CODE_TYPEDEF.  */
 
-#define TYPE_TARGET_STUB(t)    (TYPE_MAIN_TYPE (t)->flag_target_stub)
+#define TYPE_TARGET_STUB(t)    ((t)->target_is_stub ())
 
 /* * This is a function type which appears to have a prototype.  We
    need this for function calls in order to tell us if it's necessary
@@ -841,7 +841,7 @@ struct main_type
   unsigned int m_flag_unsigned : 1;
   unsigned int m_flag_nosign : 1;
   unsigned int m_flag_stub : 1;
-  unsigned int flag_target_stub : 1;
+  unsigned int m_flag_target_stub : 1;
   unsigned int flag_prototyped : 1;
   unsigned int flag_varargs : 1;
   unsigned int flag_vector : 1;
@@ -1092,6 +1092,16 @@ struct type
     this->main_type->m_flag_stub = is_stub;
   }
 
+  bool target_is_stub () const
+  {
+    return this->main_type->m_flag_target_stub;
+  }
+
+  void set_target_is_stub (bool target_is_stub)
+  {
+    this->main_type->m_flag_target_stub = target_is_stub;
+  }
+
   /* * 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;
index 0b2b032dc74280bbba1631a7488bfc0e4e1a1b63..a0d954a620626d695007dc3607225305ed3128bc 100644 (file)
@@ -266,20 +266,20 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
   pid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
                        TYPE_LENGTH (int_type) * TARGET_CHAR_BIT, "__pid_t");
   TYPE_TARGET_TYPE (pid_type) = int_type;
-  TYPE_TARGET_STUB (pid_type) = 1;
+  pid_type->set_target_is_stub (true);
 
   /* __uid_t */
   uid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
                        TYPE_LENGTH (uint_type) * TARGET_CHAR_BIT, "__uid_t");
   TYPE_TARGET_TYPE (uid_type) = uint_type;
-  TYPE_TARGET_STUB (uid_type) = 1;
+  uid_type->set_target_is_stub (true);
 
   /* __clock_t */
   clock_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
                          TYPE_LENGTH (long_type) * TARGET_CHAR_BIT,
                          "__clock_t");
   TYPE_TARGET_TYPE (clock_type) = long_type;
-  TYPE_TARGET_STUB (clock_type) = 1;
+  clock_type->set_target_is_stub (true);
 
   /* _sifields */
   sifields_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
index 735f00864d9d2db921f3ba5fb4496c4458f96b5c..f68f4efdafac8bc99ae0b6b8ac90e228c94c9f8e 100644 (file)
@@ -1866,7 +1866,7 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
 
       /* TYPE_TARGET_STUB now takes care of the zero TYPE_LENGTH problem.  */
       if (TYPE_LENGTH (*tpp) == 0)
-       TYPE_TARGET_STUB (t) = 1;
+       t->set_target_is_stub (true);
 
       *tpp = t;
       return 4 + off;
index 33a23cb61eec5635efc22183eea1418da2648ecf..752612f14e8249de0583a74e193f1a0680bb2907 100644 (file)
@@ -1716,7 +1716,7 @@ again:
          }
        else
          {
-           TYPE_TARGET_STUB (type) = 1;
+           type->set_target_is_stub (true);
            TYPE_TARGET_TYPE (type) = xtype;
          }
       }