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

Change-Id: I80d8e774316d146fbd814b2928ad5392bada39d5

gdb/ChangeLog
gdb/ctfread.c
gdb/dwarf2/read.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/mdebugread.c
gdb/stabsread.c

index 477243393631575820782be69ec14278e2b91e54..a761ebeb5d938edee391f6dc1564b45072bbde56 100644 (file)
@@ -1,3 +1,10 @@
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+       * gdbtypes.h (struct type) <has_no_signedness,
+       set_has_no_signedness>: New methods.
+       (TYPE_NOSIGN): Use type::has_no_signedness, change all write
+       call sites to use type::set_has_no_signedness.
+
 2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdbtypes.h (TYPE_UNSIGNED): Remove, replace all uses with
index 5b6d731479a1739f91b30525c65b7fd12c65eb4a..14f64047fc16b2d4e86f1cb0980fe7a25b6471f8 100644 (file)
@@ -566,7 +566,7 @@ read_base_type (struct ctf_context *ccp, ctf_id_t tid)
     }
 
   if (name != NULL && strcmp (name, "char") == 0)
-    TYPE_NOSIGN (type) = 1;
+    type->set_has_no_signedness (true);
 
   return set_tid_type (of, tid, type);
 }
index b461bd1ab6312fbb7eb1dac684e474e67b07177c..299b04b4ae2c1d2dc14c51ba197f2228ea7bb975 100644 (file)
@@ -18058,7 +18058,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
     }
 
   if (name && strcmp (name, "char") == 0)
-    TYPE_NOSIGN (type) = 1;
+    type->set_has_no_signedness (true);
 
   maybe_set_alignment (cu, die, type);
 
index 56499376989aedf145f9e19001388d06c19bba7b..88d9f7e4d9ee3f14c5303164abb757add3830a75 100644 (file)
@@ -5725,7 +5725,7 @@ gdbtypes_post_init (struct gdbarch *gdbarch)
   builtin_type->builtin_char
     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
                         !gdbarch_char_signed (gdbarch), "char");
-  TYPE_NOSIGN (builtin_type->builtin_char) = 1;
+  builtin_type->builtin_char->set_has_no_signedness (true);
   builtin_type->builtin_signed_char
     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
                         0, "signed char");
@@ -5884,7 +5884,7 @@ objfile_type (struct objfile *objfile)
   objfile_type->builtin_char
     = init_integer_type (objfile, TARGET_CHAR_BIT,
                         !gdbarch_char_signed (gdbarch), "char");
-  TYPE_NOSIGN (objfile_type->builtin_char) = 1;
+  objfile_type->builtin_char->set_has_no_signedness (true);
   objfile_type->builtin_signed_char
     = init_integer_type (objfile, TARGET_CHAR_BIT,
                         0, "signed char");
index bd03df45d02d38758a64152ad36360a61268b5a4..623b8ccf37ae551a5b85124b3f5400fb2d75bcd0 100644 (file)
@@ -214,7 +214,7 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
    "unsigned char" are distinct types; so we need an extra flag to
    indicate the absence of a sign!  */
 
-#define TYPE_NOSIGN(t)         (TYPE_MAIN_TYPE (t)->flag_nosign)
+#define TYPE_NOSIGN(t)         ((t)->has_no_signedness ())
 
 /* * A compiler may supply dwarf instrumentation
    that indicates the desired endian interpretation of the variable
@@ -851,7 +851,7 @@ struct main_type
      documentation about these fields.  */
 
   unsigned int m_flag_unsigned : 1;
-  unsigned int flag_nosign : 1;
+  unsigned int m_flag_nosign : 1;
   unsigned int flag_stub : 1;
   unsigned int flag_target_stub : 1;
   unsigned int flag_prototyped : 1;
@@ -1076,6 +1076,16 @@ struct type
     this->main_type->m_flag_unsigned = is_unsigned;
   }
 
+  bool has_no_signedness () const
+  {
+    return this->main_type->m_flag_nosign;
+  }
+
+  void set_has_no_signedness (bool has_no_signedness)
+  {
+    this->main_type->m_flag_nosign = has_no_signedness;
+  }
+
   /* * 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 376101e95cbb2e05f9711c247d9832c7bf3b2f70..4fd3de13e070dd25c3be9e7ec378565c58152874 100644 (file)
@@ -1387,7 +1387,7 @@ basic_type (int bt, struct objfile *objfile)
 
     case btChar:
       tp = init_integer_type (objfile, 8, 0, "char");
-      TYPE_NOSIGN (tp) = 1;
+      tp->set_has_no_signedness (true);
       break;
 
     case btUChar:
index 054b67e2f28f4a664617a6774f5bcfd723bd10f2..5f654e7ed2462f26342734365b4bf60693065f56 100644 (file)
@@ -2066,7 +2066,7 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       break;
     case 2:
       rettype = init_integer_type (objfile, 8, 0, "char");
-      TYPE_NOSIGN (rettype) = 1;
+      rettype->set_has_no_signedness (true);
       break;
     case 3:
       rettype = init_integer_type (objfile, 16, 0, "short");
@@ -4090,7 +4090,7 @@ read_range_type (const char **pp, int typenums[2], int type_size,
     {
       struct type *type = init_integer_type (objfile, TARGET_CHAR_BIT,
                                             0, NULL);
-      TYPE_NOSIGN (type) = 1;
+      type->set_has_no_signedness (true);
       return type;
     }
   /* We used to do this only for subrange of self or subrange of int.  */