gdb: add type::endianity_is_not_default / type::set_endianity_is_not_default
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:08:07 +0000 (11:08 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:08:07 +0000 (11:08 -0400)
Add the `endianity_is_not_default` and `set_endianity_is_not_default`
methods on `struct type`, in order to remove the
`TYPE_ENDIANITY_NOT_DEFAULT` 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) <endianity_is_not_default,
set_endianity_is_not_default>: New methods.
(TYPE_ENDIANITY_NOT_DEFAULT): Use
type::endianity_is_not_default, change all write call sites to
use type::set_endianity_is_not_default.

Change-Id: I67acd68fcdae424d7e4a601afda78612ad5d92db

gdb/ChangeLog
gdb/dwarf2/read.c
gdb/gdbtypes.c
gdb/gdbtypes.h

index 78f8e7ad019dce59c44e330bc51ae26b61ecfaa9..9d7661d1850cd92f51c1b092bc00de6bc3f55ccd 100644 (file)
@@ -1,3 +1,11 @@
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+       * gdbtypes.h (struct type) <endianity_is_not_default,
+       set_endianity_is_not_default>: New methods.
+       (TYPE_ENDIANITY_NOT_DEFAULT): Use
+       type::endianity_is_not_default, change all write call sites to
+       use type::set_endianity_is_not_default.
+
 2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdbtypes.h (TYPE_FIXED_INSTANCE): Remove, replace all
index 410e4c8c6778e706d3367b29e099f17466b9fdf6..0644a2d5f95b1363f36241fda8adaf344a10b237 100644 (file)
@@ -18063,7 +18063,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
 
   maybe_set_alignment (cu, die, type);
 
-  TYPE_ENDIANITY_NOT_DEFAULT (type) = gdbarch_byte_order (arch) != byte_order;
+  type->set_endianity_is_not_default (gdbarch_byte_order (arch) != byte_order);
 
   return set_die_type (die, type, cu);
 }
index 5ca4b880e22b5f9196ecc4a54c0029871eab9889..ed548dd6bcec38ea1ef4ac2ca2080b276c2ba6cb 100644 (file)
@@ -958,8 +958,8 @@ create_range_type (struct type *result_type, struct type *index_type,
   if (high_bound->kind () == PROP_CONST && high_bound->const_val () < 0)
     result_type->set_is_unsigned (false);
 
-  TYPE_ENDIANITY_NOT_DEFAULT (result_type)
-    = TYPE_ENDIANITY_NOT_DEFAULT (index_type);
+  result_type->set_endianity_is_not_default
+    (index_type->endianity_is_not_default ());
 
   return result_type;
 }
index dcb691468d84785208abbae8c8e9d84622c4c590..beff6a7466e95c8f5ad2e0f1f62212df26143a5a 100644 (file)
@@ -214,7 +214,7 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
    that indicates the desired endian interpretation of the variable
    differs from the native endian representation. */
 
-#define TYPE_ENDIANITY_NOT_DEFAULT(t) (TYPE_MAIN_TYPE (t)->flag_endianity_not_default)
+#define TYPE_ENDIANITY_NOT_DEFAULT(t) ((t)->endianity_is_not_default ())
 
 /* * Not textual.  By default, GDB treats all single byte integers as
    characters (or elements of strings) unless this flag is set.  */
@@ -798,7 +798,7 @@ struct main_type
   unsigned int m_flag_gnu_ifunc : 1;
   unsigned int m_flag_fixed_instance : 1;
   unsigned int flag_objfile_owned : 1;
-  unsigned int flag_endianity_not_default : 1;
+  unsigned int m_flag_endianity_not_default : 1;
 
   /* * True if this type was declared with "class" rather than
      "struct".  */
@@ -1149,6 +1149,16 @@ struct type
     this->main_type->m_flag_fixed_instance = is_fixed_instance;
   }
 
+  bool endianity_is_not_default () const
+  {
+    return this->main_type->m_flag_endianity_not_default;
+  }
+
+  void set_endianity_is_not_default (bool endianity_is_not_default)
+  {
+    this->main_type->m_flag_endianity_not_default = endianity_is_not_default;
+  }
+
   /* * 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;