Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] gdb: add type::name / type::set_name
@ 2020-05-14 18:18 Simon Marchi
  2020-05-14 18:18 ` [PATCH 2/2] gdb: remove TYPE_NAME macro Simon Marchi
  2020-05-16 15:58 ` [PATCH 1/2] gdb: add type::name / type::set_name Tom Tromey
  0 siblings, 2 replies; 9+ messages in thread
From: Simon Marchi @ 2020-05-14 18:18 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

Add the `name` and `set_name` methods on `struct type`, in order to
remove the `TYPE_NAME` macro.  In this patch, the `TYPE_NAME` macro is
changed to use `type::name`, so all the call sites that are used to set
the type name are changed to use `type::set_name`.  The next patch will
remove `TYPE_NAME` completely.

gdb/ChangeLog:

	* gdbtypes.h (struct type) <name, set_name>: New methods.
	(TYPE_CODE): Use type::name.  Change all call sites used to set
	the name to use type::set_name instead.
---
 gdb/ada-lang.c            | 22 +++++++++++-----------
 gdb/arm-tdep.c            |  4 ++--
 gdb/coffread.c            | 13 ++++++-------
 gdb/csky-tdep.c           |  2 +-
 gdb/ctfread.c             |  6 +++---
 gdb/dwarf2/read.c         | 32 ++++++++++++++++----------------
 gdb/fbsd-tdep.c           |  4 ++--
 gdb/gdbtypes.c            | 10 +++++-----
 gdb/gdbtypes.h            | 14 +++++++++++++-
 gdb/gnu-v3-abi.c          |  4 ++--
 gdb/i386-tdep.c           |  8 ++++----
 gdb/linux-tdep.c          |  4 ++--
 gdb/mdebugread.c          | 20 ++++++++++----------
 gdb/opencl-lang.c         | 10 +++++-----
 gdb/riscv-tdep.c          |  2 +-
 gdb/rs6000-tdep.c         |  4 ++--
 gdb/rust-lang.c           |  2 +-
 gdb/stabsread.c           | 30 ++++++++++++++----------------
 gdb/target-descriptions.c |  6 +++---
 gdb/windows-tdep.c        | 10 +++++-----
 20 files changed, 108 insertions(+), 99 deletions(-)

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 02e34044301..767c7c3a4d6 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -2144,7 +2144,7 @@ constrained_packed_array_type (struct type *type, long *elt_bits)
 				   elt_bits);
   create_array_type (new_type, new_elt_type, index_type);
   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
-  TYPE_NAME (new_type) = ada_type_name (type);
+  new_type->set_name (ada_type_name (type));
 
   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
        && is_dynamic_type (check_typedef (index_type)))
@@ -8029,7 +8029,7 @@ empty_record (struct type *templ)
   TYPE_NFIELDS (type) = 0;
   TYPE_FIELDS (type) = NULL;
   INIT_NONE_SPECIFIC (type);
-  TYPE_NAME (type) = "<empty>";
+  type->set_name ("<empty>");
   TYPE_LENGTH (type) = 0;
   return type;
 }
@@ -8087,7 +8087,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
   TYPE_FIELDS (rtype) = (struct field *)
     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
-  TYPE_NAME (rtype) = ada_type_name (type);
+  rtype->set_name (ada_type_name (type));
   TYPE_FIXED_INSTANCE (rtype) = 1;
 
   off = 0;
@@ -8363,7 +8363,7 @@ template_to_static_fixed_type (struct type *type0)
 		TYPE_ALLOC (type, nfields * sizeof (struct field));
 	      memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
 		      sizeof (struct field) * nfields);
-	      TYPE_NAME (type) = ada_type_name (type0);
+	      type->set_name (ada_type_name (type0));
 	      TYPE_FIXED_INSTANCE (type) = 1;
 	      TYPE_LENGTH (type) = 0;
 	    }
@@ -8412,7 +8412,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
           sizeof (struct field) * nfields);
-  TYPE_NAME (rtype) = ada_type_name (type);
+  rtype->set_name (ada_type_name (type));
   TYPE_FIXED_INSTANCE (rtype) = 1;
   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
 
@@ -8734,7 +8734,7 @@ to_fixed_array_type (struct type *type0, struct value *dval,
   /* We want to preserve the type name.  This can be useful when
      trying to get the type name of a value that has already been
      printed (for instance, if the user did "print VAR; whatis $".  */
-  TYPE_NAME (result) = TYPE_NAME (type0);
+  result->set_name (TYPE_NAME (type0));
 
   if (constrained_packed_array_p)
     {
@@ -8978,7 +8978,7 @@ static_unwrap_type (struct type *type)
     {
       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
       if (ada_type_name (type1) == NULL)
-        TYPE_NAME (type1) = ada_type_name (type);
+	type1->set_name (ada_type_name (type));
 
       return static_unwrap_type (type1);
     }
@@ -9420,7 +9420,7 @@ unwrap_value (struct value *val)
       struct type *val_type = ada_check_typedef (value_type (v));
 
       if (ada_type_name (val_type) == NULL)
-        TYPE_NAME (val_type) = ada_type_name (type);
+	val_type->set_name (ada_type_name (type));
 
       return unwrap_value (v);
     }
@@ -11674,7 +11674,7 @@ to_fixed_range_type (struct type *raw_type, struct value *dval)
          to match the size of the base_type, which is not what we want.
          Set it back to the original range type's length.  */
       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
-      TYPE_NAME (type) = name;
+      type->set_name (name);
       return type;
     }
 }
@@ -13836,8 +13836,8 @@ ada_language_arch_info (struct gdbarch *gdbarch,
   lai->primitive_type_vector [ada_primitive_type_system_address]
     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
 				      "void"));
-  TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
-    = "system__address";
+  lai->primitive_type_vector [ada_primitive_type_system_address]
+    ->set_name ("system__address");
 
   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
      type.  This is a signed integral type whose size is the same as
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 40bffbb2dd1..45df1bd39de 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -3920,7 +3920,7 @@ arm_neon_double_type (struct gdbarch *gdbarch)
       append_composite_type_field (t, "f64", elem);
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_d";
+      t->set_name ("neon_d");
       tdep->neon_double_type = t;
     }
 
@@ -3959,7 +3959,7 @@ arm_neon_quad_type (struct gdbarch *gdbarch)
       append_composite_type_field (t, "f64", init_vector_type (elem, 2));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_q";
+      t->set_name ("neon_q");
       tdep->neon_quad_type = t;
     }
 
diff --git a/gdb/coffread.c b/gdb/coffread.c
index d320332f3af..03640dee919 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -1469,7 +1469,7 @@ patch_type (struct type *type, struct type *real_type)
 	 process_coff_symbol.  */
       if (TYPE_NAME (target))
 	xfree ((char*) TYPE_NAME (target));
-      TYPE_NAME (target) = xstrdup (TYPE_NAME (real_target));
+      target->set_name (xstrdup (TYPE_NAME (real_target)));
     }
 }
 
@@ -1684,8 +1684,7 @@ process_coff_symbol (struct coff_symbol *cs,
 		  ;
 		}
 	      else
-		TYPE_NAME (SYMBOL_TYPE (sym)) =
-		  xstrdup (sym->linkage_name ());
+		SYMBOL_TYPE (sym)->set_name (xstrdup (sym->linkage_name ()));
 	    }
 
 	  /* Keep track of any type which points to empty structured
@@ -1720,7 +1719,7 @@ process_coff_symbol (struct coff_symbol *cs,
 	    if (sym->linkage_name () != NULL
 		&& *sym->linkage_name () != '~'
 		&& *sym->linkage_name () != '.')
-	      TYPE_NAME (SYMBOL_TYPE (sym)) = xstrdup (sym->linkage_name ());
+	      SYMBOL_TYPE (sym)->set_name (xstrdup (sym->linkage_name ()));
 
 	  add_symbol_to_list (sym, get_file_symbols ());
 	  break;
@@ -1881,7 +1880,7 @@ decode_base_type (struct coff_symbol *cs,
 	  /* Anonymous structure type.  */
 	  type = coff_alloc_type (cs->c_symnum);
 	  type->set_code (TYPE_CODE_STRUCT);
-	  TYPE_NAME (type) = NULL;
+	  type->set_name (NULL);
 	  INIT_CPLUS_SPECIFIC (type);
 	  TYPE_LENGTH (type) = 0;
 	  TYPE_FIELDS (type) = 0;
@@ -1901,7 +1900,7 @@ decode_base_type (struct coff_symbol *cs,
 	{
 	  /* Anonymous union type.  */
 	  type = coff_alloc_type (cs->c_symnum);
-	  TYPE_NAME (type) = NULL;
+	  type->set_name (NULL);
 	  INIT_CPLUS_SPECIFIC (type);
 	  TYPE_LENGTH (type) = 0;
 	  TYPE_FIELDS (type) = 0;
@@ -1923,7 +1922,7 @@ decode_base_type (struct coff_symbol *cs,
 	  /* Anonymous enum type.  */
 	  type = coff_alloc_type (cs->c_symnum);
 	  type->set_code (TYPE_CODE_ENUM);
-	  TYPE_NAME (type) = NULL;
+	  type->set_name (NULL);
 	  TYPE_LENGTH (type) = 0;
 	  TYPE_FIELDS (type) = 0;
 	  TYPE_NFIELDS (type) = 0;
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 955238bb014..7e5b71eece0 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -267,7 +267,7 @@ csky_vector_type (struct gdbarch *gdbarch)
 			       init_vector_type (bt->builtin_int8, 16));
 
   TYPE_VECTOR (t) = 1;
-  TYPE_NAME (t) = "builtin_type_vec128i";
+  t->set_name ("builtin_type_vec128i");
 
   return t;
 }
diff --git a/gdb/ctfread.c b/gdb/ctfread.c
index 1efa47b2f4c..d1cef953f4b 100644
--- a/gdb/ctfread.c
+++ b/gdb/ctfread.c
@@ -596,7 +596,7 @@ read_structure_type (struct ctf_context *ccp, ctf_id_t tid)
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get() ) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
   kind = ctf_type_kind (fp, tid);
   if (kind == CTF_K_UNION)
@@ -654,7 +654,7 @@ read_func_kind_type (struct ctf_context *ccp, ctf_id_t tid)
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get ()) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
   type->set_code (TYPE_CODE_FUNC);
   ctf_func_type_info (fp, tid, &cfi);
@@ -680,7 +680,7 @@ read_enum_type (struct ctf_context *ccp, ctf_id_t tid)
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get ()) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
   type->set_code (TYPE_CODE_ENUM);
   TYPE_LENGTH (type) = ctf_type_size (fp, tid);
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index ab21ab0d13a..c6db9e01425 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -9343,9 +9343,9 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
       TYPE_FIELD (type, 1) = saved_field;
       TYPE_FIELD_NAME (type, 1)
 	= rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (type, 1)));
-      TYPE_NAME (TYPE_FIELD_TYPE (type, 1))
-	= rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
-			      TYPE_FIELD_NAME (type, 1));
+      TYPE_FIELD_TYPE (type, 1)->set_name
+	(rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
+			     TYPE_FIELD_NAME (type, 1)));
 
       const char *dataless_name
 	= rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
@@ -9374,9 +9374,9 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
       const char *variant_name
 	= rust_last_path_segment (TYPE_NAME (field_type));
       TYPE_FIELD_NAME (type, 0) = variant_name;
-      TYPE_NAME (field_type)
-	= rust_fully_qualify (&objfile->objfile_obstack,
-			      TYPE_NAME (type), variant_name);
+      field_type->set_name
+	(rust_fully_qualify (&objfile->objfile_obstack,
+			     TYPE_NAME (type), variant_name));
     }
   else
     {
@@ -9477,9 +9477,9 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
 	      ++TYPE_FIELDS (sub_type);
 	    }
 	  TYPE_FIELD_NAME (type, i) = variant_name;
-	  TYPE_NAME (sub_type)
-	    = rust_fully_qualify (&objfile->objfile_obstack,
-				  TYPE_NAME (type), variant_name);
+	  sub_type->set_name
+	    (rust_fully_qualify (&objfile->objfile_obstack,
+				 TYPE_NAME (type), variant_name));
 	}
 
       /* Indicate that this is a variant type.  */
@@ -15357,13 +15357,13 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
 	  if (get_die_type (die, cu) != NULL)
 	    return get_die_type (die, cu);
 
-	  TYPE_NAME (type) = full_name;
+	  type->set_name (full_name);
 	}
       else
 	{
 	  /* The name is already allocated along with this objfile, so
 	     we don't need to duplicate it for the type.  */
-	  TYPE_NAME (type) = name;
+	  type->set_name (name);
 	}
     }
 
@@ -15940,7 +15940,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
   type->set_code (TYPE_CODE_ENUM);
   name = dwarf2_full_name (NULL, die, cu);
   if (name != NULL)
-    TYPE_NAME (type) = name;
+    type->set_name (name);
 
   attr = dwarf2_attr (die, DW_AT_type, cu);
   if (attr != NULL)
@@ -16187,7 +16187,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
 
   name = dwarf2_name (die, cu);
   if (name)
-    TYPE_NAME (type) = name;
+    type->set_name (name);
 
   maybe_set_alignment (cu, die, type);
 
@@ -17758,7 +17758,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
 
   name = dwarf2_name (die, cu);
   if (name)
-    TYPE_NAME (range_type) = name;
+    range_type->set_name (name);
 
   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
   if (attr != nullptr)
@@ -17781,7 +17781,7 @@ read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
 
   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
 		    NULL);
-  TYPE_NAME (type) = dwarf2_name (die, cu);
+  type->set_name (dwarf2_name (die, cu));
 
   /* In Ada, an unspecified type is typically used when the description
      of the type is deferred to a different unit.  When encountering
@@ -20906,7 +20906,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
 		       with this objfile, so we don't need to
 		       duplicate it for the type.  */
 		    if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-		      TYPE_NAME (SYMBOL_TYPE (sym)) = sym->search_name ();
+		      SYMBOL_TYPE (sym)->set_name (sym->search_name ());
 		  }
 	      }
 	  }
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index 5deb251a3ac..acf787c706a 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -1629,7 +1629,7 @@ fbsd_get_siginfo_type (struct gdbarch *gdbarch)
 
   /* union sigval */
   sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
-  TYPE_NAME (sigval_type) = xstrdup ("sigval");
+  sigval_type->set_name (xstrdup ("sigval"));
   append_composite_type_field (sigval_type, "sival_int", int_type);
   append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
 
@@ -1679,7 +1679,7 @@ fbsd_get_siginfo_type (struct gdbarch *gdbarch)
 
   /* struct siginfo */
   siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (siginfo_type) = xstrdup ("siginfo");
+  siginfo_type->set_name (xstrdup ("siginfo"));
   append_composite_type_field (siginfo_type, "si_signo", int_type);
   append_composite_type_field (siginfo_type, "si_errno", int_type);
   append_composite_type_field (siginfo_type, "si_code", int_type);
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 8f45af6ae7a..10c44ddbcac 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -3174,7 +3174,7 @@ init_type (struct objfile *objfile, enum type_code code, int bit,
   set_type_code (type, code);
   gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
-  TYPE_NAME (type) = name;
+  type->set_name (name);
 
   return type;
 }
@@ -3307,7 +3307,7 @@ init_complex_type (const char *name, struct type *target_type)
       t = alloc_type_copy (target_type);
       set_type_code (t, TYPE_CODE_COMPLEX);
       TYPE_LENGTH (t) = 2 * TYPE_LENGTH (target_type);
-      TYPE_NAME (t) = name;
+      t->set_name (name);
 
       TYPE_TARGET_TYPE (t) = target_type;
       TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type = t;
@@ -5290,7 +5290,7 @@ copy_type_recursive (struct objfile *objfile,
   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
 
   if (TYPE_NAME (type))
-    TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
+    new_type->set_name (xstrdup (TYPE_NAME (type)));
 
   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
@@ -5443,7 +5443,7 @@ arch_type (struct gdbarch *gdbarch,
   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
 
   if (name)
-    TYPE_NAME (type) = gdbarch_obstack_strdup (gdbarch, name);
+    type->set_name (gdbarch_obstack_strdup (gdbarch, name));
 
   return type;
 }
@@ -5615,7 +5615,7 @@ arch_composite_type (struct gdbarch *gdbarch, const char *name,
 
   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
   t = arch_type (gdbarch, code, 0, NULL);
-  TYPE_NAME (t) = name;
+  t->set_name (name);
   INIT_CPLUS_SPECIFIC (t);
   return t;
 }
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index a8cd44a75bf..aeed06ba5da 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -889,6 +889,18 @@ struct type
     this->main_type->code = code;
   }
 
+  /* Get the name of this type.  */
+  const char *name () const
+  {
+    return this->main_type->name;
+  }
+
+  /* Set the name of this type.  */
+  void set_name (const char *name)
+  {
+    this->main_type->name = name;
+  }
+
   /* * 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;
@@ -1404,7 +1416,7 @@ extern void allocate_gnat_aux_type (struct type *);
 
 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
-#define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name
+#define TYPE_NAME(thistype) ((thistype)->name ())
 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
index 1fe3a9670cf..df5818b300e 100644
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -167,7 +167,7 @@ build_gdb_vtable_type (struct gdbarch *arch)
   t = arch_type (arch, TYPE_CODE_STRUCT, offset * TARGET_CHAR_BIT, NULL);
   TYPE_NFIELDS (t) = field - field_list;
   TYPE_FIELDS (t) = field_list;
-  TYPE_NAME (t) = "gdb_gnu_v3_abi_vtable";
+  t->set_name ("gdb_gnu_v3_abi_vtable");
   INIT_CPLUS_SPECIFIC (t);
 
   return make_type_with_address_space (t, TYPE_INSTANCE_FLAG_CODE_SPACE);
@@ -1056,7 +1056,7 @@ build_std_type_info_type (struct gdbarch *arch)
   t = arch_type (arch, TYPE_CODE_STRUCT, offset * TARGET_CHAR_BIT, NULL);
   TYPE_NFIELDS (t) = field - field_list;
   TYPE_FIELDS (t) = field_list;
-  TYPE_NAME (t) = "gdb_gnu_v3_type_info";
+  t->set_name ("gdb_gnu_v3_type_info");
   INIT_CPLUS_SPECIFIC (t);
 
   return t;
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 0f8d9aa7409..f4fe3a20c70 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -3080,7 +3080,7 @@ i386_bnd_type (struct gdbarch *gdbarch)
       append_composite_type_field (t, "lbound", bt->builtin_data_ptr);
       append_composite_type_field (t, "ubound", bt->builtin_data_ptr);
 
-      TYPE_NAME (t) = "builtin_type_bound128";
+      t->set_name ("builtin_type_bound128");
       tdep->i386_bnd_type = t;
     }
 
@@ -3133,7 +3133,7 @@ i386_zmm_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int128, 4));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec512i";
+      t->set_name ("builtin_type_vec512i");
       tdep->i386_zmm_type = t;
     }
 
@@ -3186,7 +3186,7 @@ i386_ymm_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int128, 2));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec256i";
+      t->set_name ("builtin_type_vec256i");
       tdep->i386_ymm_type = t;
     }
 
@@ -3228,7 +3228,7 @@ i386_mmx_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int8, 8));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec64i";
+      t->set_name ("builtin_type_vec64i");
       tdep->i386_mmx_type = t;
     }
 
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index ed84d6ace6b..0f9559355f1 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -258,7 +258,7 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
 
   /* sival_t */
   sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
-  TYPE_NAME (sigval_type) = xstrdup ("sigval_t");
+  sigval_type->set_name (xstrdup ("sigval_t"));
   append_composite_type_field (sigval_type, "sival_int", int_type);
   append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
 
@@ -352,7 +352,7 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
 
   /* struct siginfo */
   siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (siginfo_type) = xstrdup ("siginfo");
+  siginfo_type->set_name (xstrdup ("siginfo"));
   append_composite_type_field (siginfo_type, "si_signo", int_type);
   append_composite_type_field (siginfo_type, "si_errno", int_type);
   append_composite_type_field (siginfo_type, "si_code", int_type);
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index eab52c70f17..73654d531e5 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -1010,10 +1010,10 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 	   (.Fxx or .xxfake or empty) for unnamed struct/union/enums.
 	   Alpha cc puts out an sh->iss of zero for those.  */
 	if (sh->iss == 0 || name[0] == '.' || name[0] == '\0')
-	  TYPE_NAME (t) = NULL;
+	  t->set_name (NULL);
 	else
-	  TYPE_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
-				    name, (char *) NULL);
+	  t->set_name (obconcat (&mdebugread_objfile->objfile_obstack,
+				 name, (char *) NULL));
 
 	t->set_code (type_code);
 	TYPE_LENGTH (t) = sh->value;
@@ -1324,7 +1324,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 	         for anything except pointers or functions.  */
 	    }
 	  else
-	    TYPE_NAME (SYMBOL_TYPE (s)) = s->linkage_name ();
+	    SYMBOL_TYPE (s)->set_name (s->linkage_name ());
 	}
       break;
 
@@ -1674,11 +1674,11 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 	  /* Do not set the tag name if it is a compiler generated tag name
 	     (.Fxx or .xxfake or empty) for unnamed struct/union/enums.  */
 	  if (name[0] == '.' || name[0] == '\0')
-	    TYPE_NAME (tp) = NULL;
+	    tp->set_name (NULL);
 	  else if (TYPE_NAME (tp) == NULL
 		   || strcmp (TYPE_NAME (tp), name) != 0)
-	    TYPE_NAME (tp)
-	      = obstack_strdup (&mdebugread_objfile->objfile_obstack, name);
+	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
+					  name));
 	}
     }
 
@@ -1713,8 +1713,8 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 	    }
 	  if (TYPE_NAME (tp) == NULL
 	      || strcmp (TYPE_NAME (tp), name) != 0)
-	    TYPE_NAME (tp)
-	      = obstack_strdup (&mdebugread_objfile->objfile_obstack, name);
+	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
+					  name));
 	}
     }
   if (t->bt == btTypedef)
@@ -4736,7 +4736,7 @@ new_type (char *name)
   struct type *t;
 
   t = alloc_type (mdebugread_objfile);
-  TYPE_NAME (t) = name;
+  t->set_name (name);
   INIT_CPLUS_SPECIFIC (t);
   return t;
 }
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
index 0cd3501c4d9..d686c6ea922 100644
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -1105,21 +1105,21 @@ build_opencl_types (struct gdbarch *gdbarch)
 #define BUILD_OCL_VTYPES(TYPE)\
   types[opencl_primitive_type_##TYPE##2] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 2); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##2]) = OCL_STRING(TYPE ## 2); \
+  types[opencl_primitive_type_##TYPE##2]->set_name (OCL_STRING(TYPE ## 2)); \
   types[opencl_primitive_type_##TYPE##3] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 3); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##3]) = OCL_STRING(TYPE ## 3); \
+  types[opencl_primitive_type_##TYPE##3]->set_name (OCL_STRING(TYPE ## 3)); \
   TYPE_LENGTH (types[opencl_primitive_type_##TYPE##3]) \
     = 4 * TYPE_LENGTH (types[opencl_primitive_type_##TYPE]); \
   types[opencl_primitive_type_##TYPE##4] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 4); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##4]) = OCL_STRING(TYPE ## 4); \
+  types[opencl_primitive_type_##TYPE##4]->set_name (OCL_STRING(TYPE ## 4)); \
   types[opencl_primitive_type_##TYPE##8] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 8); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##8]) = OCL_STRING(TYPE ## 8); \
+  types[opencl_primitive_type_##TYPE##8]->set_name (OCL_STRING(TYPE ## 8)); \
   types[opencl_primitive_type_##TYPE##16] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 16); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##16]) = OCL_STRING(TYPE ## 16)
+  types[opencl_primitive_type_##TYPE##16]->set_name (OCL_STRING(TYPE ## 16))
 
   types[opencl_primitive_type_char]
     = arch_integer_type (gdbarch, 8, 0, "char");
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index c1c466f1a10..e4edd7ca3e8 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -544,7 +544,7 @@ riscv_fpreg_d_type (struct gdbarch *gdbarch)
       append_composite_type_field (t, "float", bt->builtin_float);
       append_composite_type_field (t, "double", bt->builtin_double);
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_fpreg_d";
+      t->set_name ("builtin_type_fpreg_d");
       tdep->riscv_fpreg_d_type = t;
     }
 
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 3ccb307ec29..84278e708e7 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -2274,7 +2274,7 @@ rs6000_builtin_type_vec64 (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int8, 8));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "ppc_builtin_type_vec64";
+      t->set_name ("ppc_builtin_type_vec64");
       tdep->ppc_builtin_type_vec64 = t;
     }
 
@@ -2321,7 +2321,7 @@ rs6000_builtin_type_vec128 (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int8, 16));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "ppc_builtin_type_vec128";
+      t->set_name ("ppc_builtin_type_vec128");
       tdep->ppc_builtin_type_vec128 = t;
     }
 
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index b8cc4daab55..3fa550d7694 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -982,7 +982,7 @@ rust_composite_type (struct type *original,
     ++nfields;
 
   result->set_code (TYPE_CODE_STRUCT);
-  TYPE_NAME (result) = name;
+  result->set_name (name);
 
   TYPE_NFIELDS (result) = nfields;
   TYPE_FIELDS (result)
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 77f105d07b3..a453e0214e2 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -1294,12 +1294,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 
 	      /* Pascal accepts names for pointer types.  */
 	      if (get_current_subfile ()->language == language_pascal)
-		{
-		  TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
-          	}
+		SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
 	    }
 	  else
-	    TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
+	    SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
 	}
 
       add_symbol_to_list (sym, get_file_symbols ());
@@ -1314,12 +1312,12 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
           SYMBOL_VALUE (struct_sym) = valu;
           SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
           if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-            TYPE_NAME (SYMBOL_TYPE (sym))
-	      = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-			  (char *) NULL);
+	    SYMBOL_TYPE (sym)->set_name
+	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+			 (char *) NULL));
           add_symbol_to_list (struct_sym, get_file_symbols ());
         }
-      
+
       break;
 
     case 'T':
@@ -1341,9 +1339,9 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
       if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-	TYPE_NAME (SYMBOL_TYPE (sym))
-	  = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-		      (char *) NULL);
+	SYMBOL_TYPE (sym)->set_name
+	  (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+		     (char *) NULL));
       add_symbol_to_list (sym, get_file_symbols ());
 
       if (synonym)
@@ -1356,9 +1354,9 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 	  SYMBOL_VALUE (typedef_sym) = valu;
 	  SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
 	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-	    TYPE_NAME (SYMBOL_TYPE (sym))
-	      = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-			  (char *) NULL);
+	    SYMBOL_TYPE (sym)->set_name
+	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+			 (char *) NULL));
 	  add_symbol_to_list (typedef_sym, get_file_symbols ());
 	}
       break;
@@ -1688,7 +1686,7 @@ read_type (const char **pp, struct objfile *objfile)
 	   type.  */
 	type = dbx_alloc_type (typenums, objfile);
 	type->set_code (code);
-	TYPE_NAME (type) = type_name;
+	type->set_name (type_name);
 	INIT_CPLUS_SPECIFIC (type);
 	TYPE_STUB (type) = 1;
 
@@ -1752,7 +1750,7 @@ read_type (const char **pp, struct objfile *objfile)
                "complete_this_type" function, but never create unnecessary
                copies of a type otherwise.  */
 	    replace_type (type, xtype);
-	    TYPE_NAME (type) = NULL;
+	    type->set_name (NULL);
 	  }
 	else
 	  {
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 2ec07a3e3bd..20a3a640f4f 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -156,7 +156,7 @@ make_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *ttype)
 
       type *element_gdb_type = make_gdb_type (m_gdbarch, e->element_type);
       m_type = init_vector_type (element_gdb_type, e->count);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
       return;
     }
 
@@ -192,7 +192,7 @@ make_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *ttype)
     void make_gdb_type_struct (const tdesc_type_with_fields *e)
     {
       m_type = arch_composite_type (m_gdbarch, NULL, TYPE_CODE_STRUCT);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
 
       for (const tdesc_type_field &f : e->fields)
 	{
@@ -247,7 +247,7 @@ make_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *ttype)
     void make_gdb_type_union (const tdesc_type_with_fields *e)
     {
       m_type = arch_composite_type (m_gdbarch, NULL, TYPE_CODE_UNION);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
 
       for (const tdesc_type_field &f : e->fields)
 	{
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c
index 7772df4c287..086038af0d4 100644
--- a/gdb/windows-tdep.c
+++ b/gdb/windows-tdep.c
@@ -230,7 +230,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch)
   /* list entry */
 
   list_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (list_type) = xstrdup ("list");
+  list_type->set_name (xstrdup ("list"));
 
   module_list_ptr_type = void_ptr_type;
 
@@ -242,7 +242,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch)
   /* Structured Exception Handler */
 
   seh_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (seh_type) = xstrdup ("seh");
+  seh_type->set_name (xstrdup ("seh"));
 
   seh_ptr_type = arch_type (gdbarch, TYPE_CODE_PTR,
 			    TYPE_LENGTH (void_ptr_type) * TARGET_CHAR_BIT,
@@ -255,7 +255,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch)
 
   /* struct _PEB_LDR_DATA */
   peb_ldr_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (peb_ldr_type) = xstrdup ("peb_ldr_data");
+  peb_ldr_type->set_name (xstrdup ("peb_ldr_data"));
 
   append_composite_type_field (peb_ldr_type, "length", dword32_type);
   append_composite_type_field (peb_ldr_type, "initialized", dword32_type);
@@ -324,7 +324,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch)
 
   /* struct process environment block */
   peb_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (peb_type) = xstrdup ("peb");
+  peb_type->set_name (xstrdup ("peb"));
 
   /* First bytes contain several flags.  */
   append_composite_type_field (peb_type, "flags", dword_ptr_type);
@@ -343,7 +343,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch)
 
   /* struct thread information block */
   tib_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (tib_type) = xstrdup ("tib");
+  tib_type->set_name (xstrdup ("tib"));
 
   /* uint32_t current_seh;			%fs:0x0000 */
   append_composite_type_field (tib_type, "current_seh", seh_ptr_type);
-- 
2.26.2



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-14 18:18 [PATCH 1/2] gdb: add type::name / type::set_name Simon Marchi
@ 2020-05-14 18:18 ` Simon Marchi
  2020-05-16 16:00   ` Tom Tromey
  2020-05-16 15:58 ` [PATCH 1/2] gdb: add type::name / type::set_name Tom Tromey
  1 sibling, 1 reply; 9+ messages in thread
From: Simon Marchi @ 2020-05-14 18:18 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

Remove `TYPE_NAME`, changing all the call sites to use `type::name`
directly.  This is quite a big diff, but this was mostly done using sed
and coccinelle.  A few call sites were done by hand.

gdb/ChangeLog:

	* gdbtypes.h (TYPE_NAME): Remove.  Change all cal sites to use
	type::name instead.
---
 gdb/ada-lang.c                    | 45 ++++++++---------
 gdb/ada-typeprint.c               |  6 +--
 gdb/ax-gdb.c                      | 12 ++---
 gdb/c-exp.y                       |  4 +-
 gdb/c-lang.c                      |  2 +-
 gdb/c-typeprint.c                 | 56 ++++++++++-----------
 gdb/c-valprint.c                  | 14 +++---
 gdb/c-varobj.c                    |  2 +-
 gdb/coffread.c                    | 12 ++---
 gdb/compile/compile-c-types.c     |  4 +-
 gdb/compile/compile-cplus-types.c | 26 +++++-----
 gdb/completer.c                   |  2 +-
 gdb/cp-namespace.c                |  4 +-
 gdb/cp-support.c                  |  8 +--
 gdb/cp-valprint.c                 |  8 +--
 gdb/d-namespace.c                 |  2 +-
 gdb/dwarf2/read.c                 | 38 +++++++-------
 gdb/eval.c                        | 14 +++---
 gdb/expprint.c                    |  2 +-
 gdb/f-typeprint.c                 | 24 ++++-----
 gdb/gdbtypes.c                    | 64 +++++++++++------------
 gdb/gdbtypes.h                    |  5 +-
 gdb/gnu-v2-abi.c                  |  8 +--
 gdb/go-lang.c                     |  6 +--
 gdb/guile/scm-type.c              |  6 +--
 gdb/infcall.c                     | 10 ++--
 gdb/language.c                    |  4 +-
 gdb/linespec.c                    |  2 +-
 gdb/m2-lang.c                     |  4 +-
 gdb/m2-typeprint.c                | 26 +++++-----
 gdb/mdebugread.c                  | 10 ++--
 gdb/opencl-lang.c                 |  2 +-
 gdb/p-exp.y                       |  2 +-
 gdb/p-typeprint.c                 | 36 ++++++-------
 gdb/p-valprint.c                  | 12 ++---
 gdb/python/py-type.c              | 10 ++--
 gdb/regcache.c                    |  2 +-
 gdb/riscv-tdep.c                  |  4 +-
 gdb/rust-lang.c                   | 84 +++++++++++++++----------------
 gdb/stabsread.c                   | 28 +++++------
 gdb/symmisc.c                     |  2 +-
 gdb/symtab.c                      |  2 +-
 gdb/valarith.c                    | 10 ++--
 gdb/valops.c                      | 32 ++++++------
 gdb/value.c                       |  4 +-
 45 files changed, 329 insertions(+), 331 deletions(-)

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 767c7c3a4d6..80365bfcdf3 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -577,7 +577,7 @@ ada_get_field_index (const struct type *type, const char *field_name,
 
   if (!maybe_missing)
     error (_("Unable to find field %s in struct %s.  Aborting"),
-           field_name, TYPE_NAME (struct_type));
+           field_name, struct_type->name ());
 
   return -1;
 }
@@ -1470,8 +1470,8 @@ ada_fixup_array_indexes_type (struct type *index_desc_type)
      If our INDEX_DESC_TYPE was generated using the older encoding,
      the field type should be a meaningless integer type whose name
      is not equal to the field name.  */
-  if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
-      && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
+  if (TYPE_FIELD_TYPE (index_desc_type, 0)->name () != NULL
+      && strcmp (TYPE_FIELD_TYPE (index_desc_type, 0)->name (),
                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
     return;
 
@@ -3405,7 +3405,7 @@ See set/show multiple-symbol."));
 			       SYMBOL_LINE (syms[i].symbol));
 	    }
           else if (is_enumeral
-                   && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
+                   && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
             {
               printf_filtered (("[%d] "), i + first_choice);
               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
@@ -5158,7 +5158,7 @@ xget_renaming_scope (struct type *renaming_type)
      So, to extract the scope, we search for the "___XR" extension,
      and then backtrack until we find the first "__".  */
 
-  const char *name = TYPE_NAME (renaming_type);
+  const char *name = renaming_type->name ();
   const char *suffix = strstr (name, "___XR");
   const char *last;
 
@@ -6506,7 +6506,7 @@ ada_is_dispatch_table_ptr_type (struct type *type)
   if (type->code () != TYPE_CODE_PTR)
     return 0;
 
-  name = TYPE_NAME (TYPE_TARGET_TYPE (type));
+  name = TYPE_TARGET_TYPE (type)->name ();
   if (name == NULL)
     return 0;
 
@@ -6518,7 +6518,7 @@ ada_is_dispatch_table_ptr_type (struct type *type)
 static int
 ada_is_interface_tag (struct type *type)
 {
-  const char *name = TYPE_NAME (type);
+  const char *name = type->name ();
 
   if (name == NULL)
     return 0;
@@ -7834,7 +7834,7 @@ ada_prefer_type (struct type *type0, struct type *type1)
     return 1;
   else if (type0->code () == TYPE_CODE_VOID)
     return 0;
-  else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
+  else if (type1->name () == NULL && type0->name () != NULL)
     return 1;
   else if (ada_is_constrained_packed_array_type (type0))
     return 1;
@@ -7843,8 +7843,8 @@ ada_prefer_type (struct type *type0, struct type *type1)
     return 1;
   else
     {
-      const char *type0_name = TYPE_NAME (type0);
-      const char *type1_name = TYPE_NAME (type1);
+      const char *type0_name = type0->name ();
+      const char *type1_name = type1->name ();
 
       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
 	  && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
@@ -7861,7 +7861,7 @@ ada_type_name (struct type *type)
 {
   if (type == NULL)
     return NULL;
-  return TYPE_NAME (type);
+  return type->name ();
 }
 
 /* Search the list of "descriptive" types associated to TYPE for a type
@@ -8275,9 +8275,9 @@ ada_template_to_fixed_record_type_1 (struct type *type,
      the current RTYPE length might be good enough for our purposes.  */
   if (TYPE_LENGTH (type) <= 0)
     {
-      if (TYPE_NAME (rtype))
+      if (rtype->name ())
 	warning (_("Invalid type size for `%s' detected: %s."),
-		 TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
+		 rtype->name (), pulongest (TYPE_LENGTH (type)));
       else
 	warning (_("Invalid type size for <unnamed> detected: %s."),
 		 pulongest (TYPE_LENGTH (type)));
@@ -8563,10 +8563,10 @@ ada_is_redundant_range_encoding (struct type *range_type,
   if (is_dynamic_type (range_type))
     return 0;
 
-  if (TYPE_NAME (encoding_type) == NULL)
+  if (encoding_type->name () == NULL)
     return 0;
 
-  bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
+  bounds_str = strstr (encoding_type->name (), "___XDLU_");
   if (bounds_str == NULL)
     return 0;
 
@@ -8734,7 +8734,7 @@ to_fixed_array_type (struct type *type0, struct value *dval,
   /* We want to preserve the type name.  This can be useful when
      trying to get the type name of a value that has already been
      printed (for instance, if the user did "print VAR; whatis $".  */
-  result->set_name (TYPE_NAME (type0));
+  result->set_name (type0->name ());
 
   if (constrained_packed_array_p)
     {
@@ -9025,11 +9025,11 @@ ada_check_typedef (struct type *type)
   type = check_typedef (type);
   if (type == NULL || type->code () != TYPE_CODE_ENUM
       || !TYPE_STUB (type)
-      || TYPE_NAME (type) == NULL)
+      || type->name () == NULL)
     return type;
   else
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       struct type *type1 = ada_find_any_type (name);
 
       if (type1 == NULL)
@@ -11424,8 +11424,7 @@ ada_is_fixed_point_type (struct type *type)
 int
 ada_is_system_address_type (struct type *type)
 {
-  return (TYPE_NAME (type)
-          && strcmp (TYPE_NAME (type), "system__address") == 0);
+  return (type->name () && strcmp (type->name (), "system__address") == 0);
 }
 
 /* Assuming that TYPE is the representation of an Ada fixed-point
@@ -11593,14 +11592,14 @@ to_fixed_range_type (struct type *raw_type, struct value *dval)
   const char *subtype_info;
 
   gdb_assert (raw_type != NULL);
-  gdb_assert (TYPE_NAME (raw_type) != NULL);
+  gdb_assert (raw_type->name () != NULL);
 
   if (raw_type->code () == TYPE_CODE_RANGE)
     base_type = TYPE_TARGET_TYPE (raw_type);
   else
     base_type = raw_type;
 
-  name = TYPE_NAME (raw_type);
+  name = raw_type->name ();
   subtype_info = strstr (name, "___XD");
   if (subtype_info == NULL)
     {
@@ -13075,7 +13074,7 @@ catch_assert_command (const char *arg_entry, int from_tty,
 static int
 ada_is_exception_sym (struct symbol *sym)
 {
-  const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
+  const char *type_name = SYMBOL_TYPE (sym)->name ();
 
   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
           && SYMBOL_CLASS (sym) != LOC_BLOCK
diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c
index 0ae8f931451..9031e890d6e 100644
--- a/gdb/ada-typeprint.c
+++ b/gdb/ada-typeprint.c
@@ -180,8 +180,8 @@ print_range (struct type *type, struct ui_file *stream,
       break;
     default:
       fprintf_filtered (stream, "%.*s",
-			ada_name_prefix_len (TYPE_NAME (type)),
-			TYPE_NAME (type));
+			ada_name_prefix_len (type->name ()),
+			type->name ());
       break;
     }
 }
@@ -267,7 +267,7 @@ print_range_type (struct type *raw_type, struct ui_file *stream,
   const char *subtype_info;
 
   gdb_assert (raw_type != NULL);
-  name = TYPE_NAME (raw_type);
+  name = raw_type->name ();
   gdb_assert (name != NULL);
 
   if (raw_type->code () == TYPE_CODE_RANGE)
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index 57ba2107973..0f389e49cb7 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -520,7 +520,7 @@ gen_fetch (struct agent_expr *ax, struct type *type)
 	 type.  Error out and give callers a chance to handle the failure
 	 gracefully.  */
       error (_("gen_fetch: Unsupported type code `%s'."),
-	     TYPE_NAME (type));
+	     type->name ());
     }
 }
 
@@ -1533,7 +1533,7 @@ gen_struct_ref (struct agent_expr *ax, struct axs_value *value,
   
   if (!found)
     error (_("Couldn't find member named `%s' in struct/union/class `%s'"),
-	   field, TYPE_NAME (type));
+	   field, type->name ());
 }
 
 static int
@@ -1629,7 +1629,7 @@ gen_namespace_elt (struct agent_expr *ax, struct axs_value *value,
 
   if (!found)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-	   name, TYPE_NAME (curtype));
+	   name, curtype->name ());
 
   return found;
 }
@@ -1644,7 +1644,7 @@ static int
 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
 			 const struct type *curtype, char *name)
 {
-  const char *namespace_name = TYPE_NAME (curtype);
+  const char *namespace_name = curtype->name ();
   struct block_symbol sym;
 
   sym = cp_lookup_symbol_namespace (namespace_name, name,
@@ -2354,9 +2354,9 @@ gen_expr_binop_rest (struct expression *exp,
 	    if (type->code () != TYPE_CODE_ARRAY
 		&& type->code () != TYPE_CODE_PTR)
 	      {
-		if (TYPE_NAME (type))
+		if (type->name ())
 		  error (_("cannot subscript something of type `%s'"),
-			 TYPE_NAME (type));
+			 type->name ());
 		else
 		  error (_("cannot subscript requested type"));
 	      }
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index e737c667cf4..e7d0a0dc4ad 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -1431,13 +1431,13 @@ scalar_type:
 						0); }
 	|	UNSIGNED type_name
 			{ $$ = lookup_unsigned_typename (pstate->language (),
-							 TYPE_NAME($2.type)); }
+							 $2.type->name ()); }
 	|	UNSIGNED
 			{ $$ = lookup_unsigned_typename (pstate->language (),
 							 "int"); }
 	|	SIGNED_KEYWORD type_name
 			{ $$ = lookup_signed_typename (pstate->language (),
-						       TYPE_NAME($2.type)); }
+						       $2.type->name ()); }
 	|	SIGNED_KEYWORD
 			{ $$ = lookup_signed_typename (pstate->language (),
 						       "int"); }
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index 9d4064f152c..557482f2be4 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -84,7 +84,7 @@ classify_type (struct type *elttype, struct gdbarch *gdbarch,
      that would do the wrong thing.  */
   while (elttype)
     {
-      const char *name = TYPE_NAME (elttype);
+      const char *name = elttype->name ();
 
       if (elttype->code () == TYPE_CODE_CHAR || !name)
 	{
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
index 356e605d0a4..bbe12ccfe87 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
@@ -129,7 +129,7 @@ c_print_type_1 (struct type *type,
       if ((varstring != NULL && *varstring != '\0')
 	  /* Need a space if going to print stars or brackets;
 	     but not if we will print just a type name.  */
-	  || ((show > 0 || TYPE_NAME (type) == 0)
+	  || ((show > 0 || type->name () == 0)
 	      && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC
 		  || code == TYPE_CODE_METHOD
 		  || (code == TYPE_CODE_ARRAY
@@ -206,8 +206,8 @@ c_print_typedef (struct type *type,
   type = check_typedef (type);
   fprintf_filtered (stream, "typedef ");
   type_print (type, "", stream, -1);
-  if (TYPE_NAME ((SYMBOL_TYPE (new_symbol))) == 0
-      || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))),
+  if ((SYMBOL_TYPE (new_symbol))->name () == 0
+      || strcmp ((SYMBOL_TYPE (new_symbol))->name (),
 		 new_symbol->linkage_name ()) != 0
       || SYMBOL_TYPE (new_symbol)->code () == TYPE_CODE_TYPEDEF)
     fprintf_filtered (stream, " %s", new_symbol->print_name ());
@@ -256,7 +256,7 @@ cp_type_print_derivation_info (struct ui_file *stream,
 			? "public" : (TYPE_FIELD_PROTECTED (type, i)
 				      ? "protected" : "private"),
 			BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : "");
-      name = TYPE_NAME (TYPE_BASECLASS (type, i));
+      name = TYPE_BASECLASS (type, i)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -373,7 +373,7 @@ c_type_print_varspec_prefix (struct type *type,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -391,7 +391,7 @@ c_type_print_varspec_prefix (struct type *type,
     case TYPE_CODE_MEMBERPTR:
       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
 				   stream, show, 0, 0, language, flags, podata);
-      name = TYPE_NAME (TYPE_SELF_TYPE (type));
+      name = TYPE_SELF_TYPE (type)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -406,7 +406,7 @@ c_type_print_varspec_prefix (struct type *type,
 				   stream, show, 0, 0, language, flags,
 				   podata);
       fprintf_filtered (stream, "(");
-      name = TYPE_NAME (TYPE_SELF_TYPE (type));
+      name = TYPE_SELF_TYPE (type)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -762,7 +762,7 @@ c_type_print_varspec_suffix (struct type *type,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -1067,13 +1067,13 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
      spurious "{unnamed struct}"/"{unnamed union}"/"{unnamed
      enum}" tag for unnamed struct/union/enum's, which we don't
      want to print.  */
-  if (TYPE_NAME (type) != NULL
-      && !startswith (TYPE_NAME (type), "{unnamed"))
+  if (type->name () != NULL
+      && !startswith (type->name (), "{unnamed"))
     {
       /* When printing the tag name, we are still effectively
 	 printing in the outer context, hence the use of FLAGS
 	 here.  */
-      print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+      print_name_maybe_canonical (type->name (), flags, stream);
       if (show > 0)
 	fputs_filtered (" ", stream);
     }
@@ -1082,10 +1082,10 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
     {
       /* If we just printed a tag name, no need to print anything
 	 else.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	fprintf_filtered (stream, "{...}");
     }
-  else if (show > 0 || TYPE_NAME (type) == NULL)
+  else if (show > 0 || type->name () == NULL)
     {
       struct type *basetype;
       int vptr_fieldno;
@@ -1247,7 +1247,7 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
 	  struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
 	  int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
 	  const char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
-	  const char *name = TYPE_NAME (type);
+	  const char *name = type->name ();
 	  int is_constructor = name && strcmp (method_name,
 					       name) == 0;
 
@@ -1480,7 +1480,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
      always just print the type name directly from the type.  */
 
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
       c_type_print_modifier (type, stream, 0, 1, language);
 
@@ -1505,7 +1505,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 	    fprintf_filtered (stream, "enum ");
 	}
 
-      print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+      print_name_maybe_canonical (type->name (), flags, stream);
       return;
     }
 
@@ -1516,7 +1516,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
     case TYPE_CODE_TYPEDEF:
       /* If we get here, the typedef doesn't have a name, and we
 	 couldn't resolve TYPE_TARGET_TYPE.  Not much we can do.  */
-      gdb_assert (TYPE_NAME (type) == NULL);
+      gdb_assert (type->name () == NULL);
       gdb_assert (TYPE_TARGET_TYPE (type) == NULL);
       fprintf_styled (stream, metadata_style.style (),
 		      _("<unnamed typedef>"));
@@ -1556,10 +1556,10 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
          "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}"
          tag for unnamed struct/union/enum's, which we don't
          want to print.  */
-      if (TYPE_NAME (type) != NULL
-	  && !startswith (TYPE_NAME (type), "{unnamed"))
+      if (type->name () != NULL
+	  && !startswith (type->name (), "{unnamed"))
 	{
-	  print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	  print_name_maybe_canonical (type->name (), flags, stream);
 	  if (show > 0)
 	    fputs_filtered (" ", stream);
 	}
@@ -1569,10 +1569,10 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 	{
 	  /* If we just printed a tag name, no need to print anything
 	     else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "{...}");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  LONGEST lastval = 0;
 
@@ -1588,8 +1588,8 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 	    {
 	      struct type *underlying = check_typedef (TYPE_TARGET_TYPE (type));
 
-	      if (TYPE_NAME (underlying) != NULL)
-		fprintf_filtered (stream, ": %s ", TYPE_NAME (underlying));
+	      if (underlying->name () != NULL)
+		fprintf_filtered (stream, ": %s ", underlying->name ());
 	    }
 
 	  fprintf_filtered (stream, "{");
@@ -1622,7 +1622,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 
 	c_type_print_modifier (type, stream, 0, 1, language);
 	fprintf_filtered (stream, "flag ");
-	print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	print_name_maybe_canonical (type->name (), flags, stream);
 	if (show > 0)
 	  {
 	    fputs_filtered (" ", stream);
@@ -1684,7 +1684,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 
     case TYPE_CODE_NAMESPACE:
       fputs_filtered ("namespace ", stream);
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       break;
 
     default:
@@ -1692,10 +1692,10 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
          as fundamental types.  For these, just print whatever the
          type name is, as recorded in the type itself.  If there is no
          type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
 	  c_type_print_modifier (type, stream, 0, 1, language);
-	  print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	  print_name_maybe_canonical (type->name (), flags, stream);
 	}
       else
 	{
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index d117248c442..7d5feb3e6bc 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -78,7 +78,7 @@ c_textual_element_type (struct type *type, char format)
   while (iter_type)
     {
       /* Check the name of the type.  */
-      if (TYPE_NAME (iter_type) && textual_name (TYPE_NAME (iter_type)))
+      if (iter_type->name () && textual_name (iter_type->name ()))
 	return 1;
 
       if (iter_type->code () != TYPE_CODE_TYPEDEF)
@@ -521,11 +521,11 @@ c_value_print (struct value *val, struct ui_file *stream,
          (Don't use c_textual_element_type here; quoted strings
          are always exactly (char *), (wchar_t *), or the like.  */
       if (original_type->code () == TYPE_CODE_PTR
-	  && TYPE_NAME (original_type) == NULL
-	  && TYPE_NAME (TYPE_TARGET_TYPE (original_type)) != NULL
-	  && (strcmp (TYPE_NAME (TYPE_TARGET_TYPE (original_type)),
+	  && original_type->name () == NULL
+	  && TYPE_TARGET_TYPE (original_type)->name () != NULL
+	  && (strcmp (TYPE_TARGET_TYPE (original_type)->name (),
 		      "char") == 0
-	      || textual_name (TYPE_NAME (TYPE_TARGET_TYPE (original_type)))))
+	      || textual_name (TYPE_TARGET_TYPE (original_type)->name ())))
 	{
 	  /* Print nothing.  */
 	}
@@ -598,14 +598,14 @@ c_value_print (struct value *val, struct ui_file *stream,
 		    < TYPE_LENGTH (value_enclosing_type (val)))))
 	    val = value_cast (real_type, val);
 	  fprintf_filtered (stream, "(%s%s) ",
-			    TYPE_NAME (real_type),
+			    real_type->name (),
 			    full ? "" : _(" [incomplete object]"));
 	}
       else if (type != check_typedef (value_enclosing_type (val)))
 	{
 	  /* No RTTI information, so let's do our best.  */
 	  fprintf_filtered (stream, "(%s ?) ",
-			    TYPE_NAME (value_enclosing_type (val)));
+			    value_enclosing_type (val)->name ());
 	  val = value_cast (value_enclosing_type (val), val);
 	}
     }
diff --git a/gdb/c-varobj.c b/gdb/c-varobj.c
index 156f622b1b3..51940b9dd66 100644
--- a/gdb/c-varobj.c
+++ b/gdb/c-varobj.c
@@ -144,7 +144,7 @@ c_is_path_expr_parent (const struct varobj *var)
   /* Anonymous unions and structs are also not path_expr parents.  */
   if ((type->code () == TYPE_CODE_STRUCT
        || type->code () == TYPE_CODE_UNION)
-      && TYPE_NAME (type) == NULL)
+      && type->name () == NULL)
     {
       const struct varobj *parent = var->parent;
 
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 03640dee919..0999136b62a 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -1463,13 +1463,13 @@ patch_type (struct type *type, struct type *real_type)
 	  TYPE_FIELDS (real_target), 
 	  field_size);
 
-  if (TYPE_NAME (real_target))
+  if (real_target->name ())
     {
       /* The previous copy of TYPE_NAME is allocated by
 	 process_coff_symbol.  */
-      if (TYPE_NAME (target))
-	xfree ((char*) TYPE_NAME (target));
-      target->set_name (xstrdup (TYPE_NAME (real_target)));
+      if (target->name ())
+	xfree ((char*) target->name ());
+      target->set_name (xstrdup (real_target->name ()));
     }
 }
 
@@ -1658,7 +1658,7 @@ process_coff_symbol (struct coff_symbol *cs,
 	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 
 	  /* If type has no name, give it one.  */
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (SYMBOL_TYPE (sym)->name () == 0)
 	    {
 	      if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
 		  || SYMBOL_TYPE (sym)->code () == TYPE_CODE_FUNC)
@@ -1715,7 +1715,7 @@ process_coff_symbol (struct coff_symbol *cs,
 	  /* Some compilers try to be helpful by inventing "fake"
 	     names for anonymous enums, structures, and unions, like
 	     "~0fake" or ".0fake".  Thanks, but no thanks...  */
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (SYMBOL_TYPE (sym)->name () == 0)
 	    if (sym->linkage_name () != NULL
 		&& *sym->linkage_name () != '~'
 		&& *sym->linkage_name () != '.')
diff --git a/gdb/compile/compile-c-types.c b/gdb/compile/compile-c-types.c
index ed4a6e93b6c..8f6ed0571ca 100644
--- a/gdb/compile/compile-c-types.c
+++ b/gdb/compile/compile-c-types.c
@@ -201,7 +201,7 @@ convert_int (compile_c_instance *context, struct type *type)
 	}
       return context->plugin ().int_type (TYPE_UNSIGNED (type),
 					  TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+					  type->name ());
     }
   else
     return context->plugin ().int_type_v0 (TYPE_UNSIGNED (type),
@@ -215,7 +215,7 @@ convert_float (compile_c_instance *context, struct type *type)
 {
   if (context->plugin ().version () >= GCC_C_FE_VERSION_1)
     return context->plugin ().float_type (TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+					  type->name ());
   else
     return context->plugin ().float_type_v0 (TYPE_LENGTH (type));
 }
diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c
index 3dec3b2a305..523ab34b403 100644
--- a/gdb/compile/compile-cplus-types.c
+++ b/gdb/compile/compile-cplus-types.c
@@ -364,7 +364,7 @@ compile_cplus_instance::new_scope (const char *type_name, struct type *type)
     }
   else
     {
-      if (TYPE_NAME (type) == nullptr)
+      if (type->name () == nullptr)
 	{
 	  /* Anonymous type  */
 
@@ -383,8 +383,8 @@ compile_cplus_instance::new_scope (const char *type_name, struct type *type)
 	{
 	  scope_component comp
 	    = {
-	        decl_name (TYPE_NAME (type)).get (),
-		lookup_symbol (TYPE_NAME (type), block (), VAR_DOMAIN, nullptr)
+	        decl_name (type->name ()).get (),
+		lookup_symbol (type->name (), block (), VAR_DOMAIN, nullptr)
 	      };
 	  scope.push_back (comp);
 	}
@@ -515,13 +515,13 @@ compile_cplus_convert_typedef (compile_cplus_instance *instance,
 			       struct type *type,
 			       enum gcc_cp_symbol_kind nested_access)
 {
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     return scope.nested_type ();
 
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Make sure the scope for this type has been pushed.  */
   instance->enter_scope (std::move (scope));
@@ -807,10 +807,10 @@ compile_cplus_convert_struct_or_union (compile_cplus_instance *instance,
 
   /* Get the decl name of this type.  */
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Create a new scope for TYPE.  */
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     {
@@ -913,7 +913,7 @@ compile_cplus_convert_enum (compile_cplus_instance *instance, struct type *type,
   bool scoped_enum_p = false;
 
   /* Create a new scope for this type.  */
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     {
@@ -923,7 +923,7 @@ compile_cplus_convert_enum (compile_cplus_instance *instance, struct type *type,
     }
 
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Push all scopes.  */
   instance->enter_scope (std::move (scope));
@@ -1022,7 +1022,7 @@ compile_cplus_convert_int (compile_cplus_instance *instance, struct type *type)
     }
 
   return instance->plugin ().get_int_type
-    (TYPE_UNSIGNED (type), TYPE_LENGTH (type), TYPE_NAME (type));
+    (TYPE_UNSIGNED (type), TYPE_LENGTH (type), type->name ());
 }
 
 /* Convert a floating-point type to its gcc representation.  */
@@ -1032,7 +1032,7 @@ compile_cplus_convert_float (compile_cplus_instance *instance,
 			     struct type *type)
 {
   return instance->plugin ().get_float_type
-    (TYPE_LENGTH (type), TYPE_NAME (type));
+    (TYPE_LENGTH (type), type->name ());
 }
 
 /* Convert the 'void' type to its gcc representation.  */
@@ -1102,9 +1102,9 @@ static gcc_type
 compile_cplus_convert_namespace (compile_cplus_instance *instance,
 				 struct type *type)
 {
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Push scope.  */
   instance->enter_scope (std::move (scope));
diff --git a/gdb/completer.c b/gdb/completer.c
index 71e31cf6df8..d03dc77c65d 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -1120,7 +1120,7 @@ add_struct_fields (struct type *type, completion_list &output,
 	{
 	  if (!computed_type_name)
 	    {
-	      type_name = TYPE_NAME (type);
+	      type_name = type->name ();
 	      computed_type_name = 1;
 	    }
 	  /* Omit constructors from the completion list.  */
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
index 517a0711d9d..81fb2ef67c4 100644
--- a/gdb/cp-namespace.c
+++ b/gdb/cp-namespace.c
@@ -224,7 +224,7 @@ cp_lookup_bare_symbol (const struct language_defn *langdef,
       /* If TYPE_NAME is NULL, abandon trying to find this symbol.
 	 This can happen for lambda functions compiled with clang++,
 	 which outputs no name for the container class.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	return {};
 
       /* Look for symbol NAME in this class.  */
@@ -918,7 +918,7 @@ cp_lookup_nested_symbol (struct type *parent_type,
 
   if (symbol_lookup_debug)
     {
-      const char *type_name = TYPE_NAME (saved_parent_type);
+      const char *type_name = saved_parent_type->name ();
 
       fprintf_unfiltered (gdb_stdlog,
 			  "cp_lookup_nested_symbol (%s, %s, %s, %s)\n",
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index bc9e8d4eda5..1e54aaea3b1 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -207,11 +207,11 @@ inspect_type (struct demangle_parse_info *info,
 
 	     If the symbol is typedef and its type name is the same
 	     as the symbol's name, e.g., "typedef struct foo foo;".  */
-	  if (TYPE_NAME (type) != nullptr
-	      && strcmp (TYPE_NAME (type), name) == 0)
+	  if (type->name () != nullptr
+	      && strcmp (type->name (), name) == 0)
 	    return 0;
 
-	  is_anon = (TYPE_NAME (type) == NULL
+	  is_anon = (type->name () == NULL
 		     && (type->code () == TYPE_CODE_ENUM
 			 || type->code () == TYPE_CODE_STRUCT
 			 || type->code () == TYPE_CODE_UNION));
@@ -1278,7 +1278,7 @@ add_symbol_overload_list_adl_namespace (struct type *type,
 	type = TYPE_TARGET_TYPE (type);
     }
 
-  type_name = TYPE_NAME (type);
+  type_name = type->name ();
 
   if (type_name == NULL)
     return;
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
index 799bdb10ef7..1fb7edd5b05 100644
--- a/gdb/cp-valprint.c
+++ b/gdb/cp-valprint.c
@@ -61,7 +61,7 @@ const char vtbl_ptr_name[] = "__vtbl_ptr_type";
 int
 cp_is_vtbl_ptr_type (struct type *type)
 {
-  const char *type_name = TYPE_NAME (type);
+  const char *type_name = type->name ();
 
   return (type_name != NULL && !strcmp (type_name, vtbl_ptr_name));
 }
@@ -207,7 +207,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
 		  fprintf_filtered (stream, "\n");
 		  print_spaces_filtered (2 + 2 * recurse, stream);
 		  fputs_filtered ("members of ", stream);
-		  fputs_filtered (TYPE_NAME (type), stream);
+		  fputs_filtered (type->name (), stream);
 		  fputs_filtered (":", stream);
 		}
 	    }
@@ -411,7 +411,7 @@ cp_print_value (struct value *val, struct ui_file *stream,
       LONGEST boffset = 0;
       int skip = 0;
       struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
-      const char *basename = TYPE_NAME (baseclass);
+      const char *basename = baseclass->name ();
       struct value *base_val = NULL;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
@@ -708,7 +708,7 @@ cp_print_class_member (const gdb_byte *valaddr, struct type *type,
       const char *name;
 
       fputs_filtered (prefix, stream);
-      name = TYPE_NAME (self_type);
+      name = self_type->name ();
       if (name)
 	fputs_filtered (name, stream);
       else
diff --git a/gdb/d-namespace.c b/gdb/d-namespace.c
index f15708b60bf..f3053d6a734 100644
--- a/gdb/d-namespace.c
+++ b/gdb/d-namespace.c
@@ -131,7 +131,7 @@ d_lookup_symbol (const struct language_defn *langdef,
 	    return {};
 
 	  type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (lang_this.symbol)));
-	  classname = TYPE_NAME (type);
+	  classname = type->name ();
 	  nested = name;
 	}
       else
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index c6db9e01425..dc086621c77 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -9342,13 +9342,13 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
 	 field at index 1 and the data-less field at index 2.  */
       TYPE_FIELD (type, 1) = saved_field;
       TYPE_FIELD_NAME (type, 1)
-	= rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (type, 1)));
+	= rust_last_path_segment (TYPE_FIELD_TYPE (type, 1)->name ());
       TYPE_FIELD_TYPE (type, 1)->set_name
-	(rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
+	(rust_fully_qualify (&objfile->objfile_obstack, type->name (),
 			     TYPE_FIELD_NAME (type, 1)));
 
       const char *dataless_name
-	= rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
+	= rust_fully_qualify (&objfile->objfile_obstack, type->name (),
 			      name);
       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
 					      dataless_name);
@@ -9372,11 +9372,11 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
 
       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
       const char *variant_name
-	= rust_last_path_segment (TYPE_NAME (field_type));
+	= rust_last_path_segment (field_type->name ());
       TYPE_FIELD_NAME (type, 0) = variant_name;
       field_type->set_name
 	(rust_fully_qualify (&objfile->objfile_obstack,
-			     TYPE_NAME (type), variant_name));
+			     type->name (), variant_name));
     }
   else
     {
@@ -9460,7 +9460,7 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
 	     That name can be used to look up the correct
 	     discriminant.  */
 	  const char *variant_name
-	    = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (type, i)));
+	    = rust_last_path_segment (TYPE_FIELD_TYPE (type, i)->name ());
 
 	  auto iter = discriminant_map.find (variant_name);
 	  if (iter != discriminant_map.end ())
@@ -9479,7 +9479,7 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
 	  TYPE_FIELD_NAME (type, i) = variant_name;
 	  sub_type->set_name
 	    (rust_fully_qualify (&objfile->objfile_obstack,
-				 TYPE_NAME (type), variant_name));
+				 type->name (), variant_name));
 	}
 
       /* Indicate that this is a variant type.  */
@@ -14495,7 +14495,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
       handle_data_member_location (die, cu, fp);
       FIELD_BITSIZE (*fp) = 0;
       FIELD_TYPE (*fp) = die_type (die, cu);
-      FIELD_NAME (*fp) = TYPE_NAME (fp->type);
+      FIELD_NAME (*fp) = fp->type->name ();
     }
   else
     gdb_assert_not_reached ("missing case in dwarf2_add_field");
@@ -15704,7 +15704,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
 		  if (i < TYPE_N_BASECLASSES (t))
 		    complaint (_("virtual function table pointer "
 				 "not found when defining class '%s'"),
-			       TYPE_NAME (type) ? TYPE_NAME (type) : "");
+			       type->name () ? type->name () : "");
 		}
 	      else
 		{
@@ -16498,7 +16498,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
 
 	  std::vector<const char *> excludes;
 	  add_using_directive (using_directives (cu),
-			       previous_prefix, TYPE_NAME (type), NULL,
+			       previous_prefix, type->name (), NULL,
 			       NULL, excludes, 0, &objfile->objfile_obstack);
 	}
     }
@@ -17261,7 +17261,7 @@ dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
     tt = nullptr;
 
-  const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
+  const char *name = (tt == nullptr) ? nullptr : tt->name ();
   return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
 }
 
@@ -17329,7 +17329,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
 	      {
 		struct obstack *obstack
 		  = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
-		name = obconcat (obstack, "_Complex ", TYPE_NAME (type),
+		name = obconcat (obstack, "_Complex ", type->name (),
 				 nullptr);
 	      }
 	    type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
@@ -20905,7 +20905,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
 		    /* The symbol's name is already allocated along
 		       with this objfile, so we don't need to
 		       duplicate it for the type.  */
-		    if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+		    if (SYMBOL_TYPE (sym)->name () == 0)
 		      SYMBOL_TYPE (sym)->set_name (sym->search_name ());
 		  }
 	      }
@@ -21657,18 +21657,18 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
 	   DW_TAG_namespace DIEs with a name of "::" for the global namespace.
 	   Work around this problem here.  */
 	if (cu->language == language_cplus
-	    && strcmp (TYPE_NAME (parent_type), "::") == 0)
+	    && strcmp (parent_type->name (), "::") == 0)
 	  return "";
 	/* We give a name to even anonymous namespaces.  */
-	return TYPE_NAME (parent_type);
+	return parent_type->name ();
       case DW_TAG_class_type:
       case DW_TAG_interface_type:
       case DW_TAG_structure_type:
       case DW_TAG_union_type:
       case DW_TAG_module:
 	parent_type = read_type_die (parent, cu);
-	if (TYPE_NAME (parent_type) != NULL)
-	  return TYPE_NAME (parent_type);
+	if (parent_type->name () != NULL)
+	  return parent_type->name ();
 	else
 	  /* An anonymous structure is only allowed non-static data
 	     members; no typedefs, no member functions, et cetera.
@@ -21703,8 +21703,8 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
 	parent_type = read_type_die (parent, cu);
 	if (TYPE_DECLARED_CLASS (parent_type))
 	  {
-	    if (TYPE_NAME (parent_type) != NULL)
-	      return TYPE_NAME (parent_type);
+	    if (parent_type->name () != NULL)
+	      return parent_type->name ();
 	    return "";
 	  }
 	/* Fall through.  */
diff --git a/gdb/eval.c b/gdb/eval.c
index 7c45df0b3db..ea086027880 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -989,13 +989,13 @@ evaluate_funcall (type *expect_type, expression *exp, int *pos,
       function_name = NULL;
       if (type->code () == TYPE_CODE_NAMESPACE)
 	{
-	  function = cp_lookup_symbol_namespace (TYPE_NAME (type),
+	  function = cp_lookup_symbol_namespace (type->name (),
 						 name,
 						 get_selected_block (0),
 						 VAR_DOMAIN).symbol;
 	  if (function == NULL)
 	    error (_("No symbol \"%s\" in namespace \"%s\"."),
-		   name, TYPE_NAME (type));
+		   name, type->name ());
 
 	  tem = 1;
 	  /* arg2 is left as NULL on purpose.  */
@@ -2327,9 +2327,9 @@ evaluate_subexp_standard (struct type *expect_type,
 	  if (type->code () != TYPE_CODE_ARRAY
 	      && type->code () != TYPE_CODE_PTR)
 	    {
-	      if (TYPE_NAME (type))
+	      if (type->name ())
 		error (_("cannot subscript something of type `%s'"),
-		       TYPE_NAME (type));
+		       type->name ());
 	      else
 		error (_("cannot subscript requested type"));
 	    }
@@ -2370,7 +2370,7 @@ evaluate_subexp_standard (struct type *expect_type,
 	      else
 		{
 		  error (_("cannot subscript something of type `%s'"),
-			 TYPE_NAME (value_type (arg1)));
+			 value_type (arg1)->name ());
 		}
 	    }
 
@@ -2392,9 +2392,9 @@ evaluate_subexp_standard (struct type *expect_type,
 		  break;
 
 		default:
-		  if (TYPE_NAME (type))
+		  if (type->name ())
 		    error (_("cannot subscript something of type `%s'"),
-			   TYPE_NAME (type));
+			   type->name ());
 		  else
 		    error (_("cannot subscript requested type"));
 		}
diff --git a/gdb/expprint.c b/gdb/expprint.c
index a190d8ce21b..026b775260d 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -87,7 +87,7 @@ print_subexp_standard (struct expression *exp, int *pos,
     case OP_SCOPE:
       myprec = PREC_PREFIX;
       assoc = 0;
-      fputs_filtered (TYPE_NAME (exp->elts[pc + 1].type), stream);
+      fputs_filtered (exp->elts[pc + 1].type->name (), stream);
       fputs_filtered ("::", stream);
       nargs = longest_to_int (exp->elts[pc + 2].longconst);
       (*pos) += 4 + BYTES_TO_EXP_ELEM (nargs + 1);
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index 200896b6d05..820ba5ff0ef 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -70,7 +70,7 @@ f_print_type (struct type *type, const char *varstring, struct ui_file *stream,
       /* Need a space if going to print stars or brackets; but not if we
 	 will print just a type name.  */
       || ((show > 0
-	   || TYPE_NAME (type) == 0)
+	   || type->name () == 0)
           && (code == TYPE_CODE_FUNC
 	      || code == TYPE_CODE_METHOD
 	      || code == TYPE_CODE_ARRAY
@@ -114,7 +114,7 @@ f_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -178,7 +178,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -332,14 +332,14 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
   /* When SHOW is zero or less, and there is a valid type name, then always
      just print the type name directly from the type.  */
 
-  if ((show <= 0) && (TYPE_NAME (type) != NULL))
+  if ((show <= 0) && (type->name () != NULL))
     {
       const char *prefix = "";
       if (type->code () == TYPE_CODE_UNION)
 	prefix = "Type, C_Union :: ";
       else if (type->code () == TYPE_CODE_STRUCT)
 	prefix = "Type ";
-      fprintfi_filtered (level, stream, "%s%s", prefix, TYPE_NAME (type));
+      fprintfi_filtered (level, stream, "%s%s", prefix, type->name ());
       return;
     }
 
@@ -376,7 +376,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
       {
 	gdbarch *gdbarch = get_type_arch (type);
 	struct type *void_type = builtin_f_type (gdbarch)->builtin_void;
-	fprintfi_filtered (level, stream, "%s", TYPE_NAME (void_type));
+	fprintfi_filtered (level, stream, "%s", void_type->name ());
       }
       break;
 
@@ -399,7 +399,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
          through as TYPE_CODE_INT since dbxstclass.h is so
          C-oriented, we must change these to "character" from "char".  */
 
-      if (strcmp (TYPE_NAME (type), "char") == 0)
+      if (strcmp (type->name (), "char") == 0)
 	fprintfi_filtered (level, stream, "character");
       else
 	goto default_case;
@@ -424,7 +424,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
 	fprintfi_filtered (level, stream, "Type, C_Union :: ");
       else
 	fprintfi_filtered (level, stream, "Type ");
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       /* According to the definition,
          we only print structure elements in case show > 0.  */
       if (show > 0)
@@ -442,12 +442,12 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
 	      fputs_filtered ("\n", stream);
 	    }
 	  fprintfi_filtered (level, stream, "End Type ");
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	}
       break;
 
     case TYPE_CODE_MODULE:
-      fprintfi_filtered (level, stream, "module %s", TYPE_NAME (type));
+      fprintfi_filtered (level, stream, "module %s", type->name ());
       break;
 
     default_case:
@@ -456,8 +456,8 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
          such as fundamental types.  For these, just print whatever
          the type name is, as recorded in the type itself.  If there
          is no type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
-	fprintfi_filtered (level, stream, "%s", TYPE_NAME (type));
+      if (type->name () != NULL)
+	fprintfi_filtered (level, stream, "%s", type->name ());
       else
 	error (_("Invalid type code (%d) in symbol table."), type->code ());
       break;
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 10c44ddbcac..68d4c0c4a24 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -1572,11 +1572,11 @@ type_name_or_error (struct type *type)
 
   type = check_typedef (type);
 
-  name = TYPE_NAME (type);
+  name = type->name ();
   if (name != NULL)
     return name;
 
-  name = TYPE_NAME (saved_type);
+  name = saved_type->name ();
   objfile = TYPE_OBJFILE (saved_type);
   error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
 	 name ? name : "<anonymous>",
@@ -1706,11 +1706,11 @@ lookup_template_type (const char *name, struct type *type,
 {
   struct symbol *sym;
   char *nam = (char *) 
-    alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
+    alloca (strlen (name) + strlen (type->name ()) + 4);
 
   strcpy (nam, name);
   strcat (nam, "<");
-  strcat (nam, TYPE_NAME (type));
+  strcat (nam, type->name ());
   strcat (nam, " >");	/* FIXME, extra space still introduced in gcc?  */
 
   sym = lookup_symbol (nam, block, VAR_DOMAIN, 0).symbol;
@@ -2213,7 +2213,7 @@ resolve_dynamic_array_or_string (struct type *type,
 	     if the DWARF info is not correct.  Issue a warning,
 	     and assume no byte/bit stride (leave bit_stride = 0).  */
 	  warning (_("cannot determine array stride for type %s"),
-		   TYPE_NAME (type) ? TYPE_NAME (type) : "<no name>");
+		   type->name () ? type->name () : "<no name>");
 	}
     }
   else
@@ -2764,7 +2764,7 @@ check_typedef (struct type *type)
 	  if (currently_reading_symtab)
 	    return make_qualified_type (type, instance_flags, NULL);
 
-	  name = TYPE_NAME (type);
+	  name = type->name ();
 	  /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or
 	     VAR_DOMAIN as appropriate?  */
 	  if (name == NULL)
@@ -2817,7 +2817,7 @@ check_typedef (struct type *type)
       && opaque_type_resolution 
       && !currently_reading_symtab)
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       struct type *newtype;
 
       if (name == NULL)
@@ -2851,7 +2851,7 @@ check_typedef (struct type *type)
      types.  */
   else if (TYPE_STUB (type) && !currently_reading_symtab)
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or VAR_DOMAIN
          as appropriate?  */
       struct symbol *sym;
@@ -3297,10 +3297,10 @@ init_complex_type (const char *name, struct type *target_type)
 	{
 	  char *new_name
 	    = (char *) TYPE_ALLOC (target_type,
-				   strlen (TYPE_NAME (target_type))
+				   strlen (target_type->name ())
 				   + strlen ("_Complex ") + 1);
 	  strcpy (new_name, "_Complex ");
-	  strcat (new_name, TYPE_NAME (target_type));
+	  strcat (new_name, target_type->name ());
 	  name = new_name;
 	}
 
@@ -3575,8 +3575,8 @@ int
 class_types_same_p (const struct type *a, const struct type *b)
 {
   return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
-	  || (TYPE_NAME (a) && TYPE_NAME (b)
-	      && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
+	  || (a->name () && b->name ()
+	      && !strcmp (a->name (), b->name ())));
 }
 
 /* If BASE is an ancestor of DCLASS return the distance between them.
@@ -3929,8 +3929,8 @@ types_equal (struct type *a, struct type *b)
      stubs.  The types won't point to the same address, but they
      really are the same.  */
 
-  if (TYPE_NAME (a) && TYPE_NAME (b)
-      && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
+  if (a->name () && b->name ()
+      && strcmp (a->name (), b->name ()) == 0)
     return true;
 
   /* Check if identical after resolving typedefs.  */
@@ -4011,9 +4011,9 @@ check_types_equal (struct type *type1, struct type *type2,
       || TYPE_NFIELDS (type1) != TYPE_NFIELDS (type2))
     return false;
 
-  if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
+  if (!compare_maybe_null_strings (type1->name (), type2->name ()))
     return false;
-  if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
+  if (!compare_maybe_null_strings (type1->name (), type2->name ()))
     return false;
 
   if (type1->code () == TYPE_CODE_RANGE)
@@ -4290,12 +4290,12 @@ rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value
 		{
 		  /* unsigned int -> unsigned int, or
 		     unsigned long -> unsigned long */
-		  if (integer_types_same_name_p (TYPE_NAME (parm),
-						 TYPE_NAME (arg)))
+		  if (integer_types_same_name_p (parm->name (),
+						 arg->name ()))
 		    return EXACT_MATCH_BADNESS;
-		  else if (integer_types_same_name_p (TYPE_NAME (arg),
+		  else if (integer_types_same_name_p (arg->name (),
 						      "int")
-			   && integer_types_same_name_p (TYPE_NAME (parm),
+			   && integer_types_same_name_p (parm->name (),
 							 "long"))
 		    /* unsigned int -> unsigned long */
 		    return INTEGER_PROMOTION_BADNESS;
@@ -4305,9 +4305,9 @@ rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value
 		}
 	      else
 		{
-		  if (integer_types_same_name_p (TYPE_NAME (arg),
+		  if (integer_types_same_name_p (arg->name (),
 						 "long")
-		      && integer_types_same_name_p (TYPE_NAME (parm),
+		      && integer_types_same_name_p (parm->name (),
 						    "int"))
 		    /* signed long -> unsigned int */
 		    return INTEGER_CONVERSION_BADNESS;
@@ -4318,12 +4318,12 @@ rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value
 	    }
 	  else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
 	    {
-	      if (integer_types_same_name_p (TYPE_NAME (parm),
-					     TYPE_NAME (arg)))
+	      if (integer_types_same_name_p (parm->name (),
+					     arg->name ()))
 		return EXACT_MATCH_BADNESS;
-	      else if (integer_types_same_name_p (TYPE_NAME (arg),
+	      else if (integer_types_same_name_p (arg->name (),
 						  "int")
-		       && integer_types_same_name_p (TYPE_NAME (parm),
+		       && integer_types_same_name_p (parm->name (),
 						     "long"))
 		return INTEGER_PROMOTION_BADNESS;
 	      else
@@ -4629,8 +4629,8 @@ rank_one_type (struct type *parm, struct type *arg, struct value *value)
   /* Debugging only.  */
     fprintf_filtered (gdb_stderr,
 		      "------ Arg is %s [%d], parm is %s [%d]\n",
-		      TYPE_NAME (arg), arg->code (),
-		      TYPE_NAME (parm), parm->code ());
+		      arg->name (), arg->code (),
+		      parm->name (), parm->code ());
 
   /* x -> y means arg of type x being supplied for parameter of type y.  */
 
@@ -4905,8 +4905,8 @@ recursive_dump_type (struct type *type, int spaces)
   gdb_print_host_address (type, gdb_stdout);
   printf_filtered ("\n");
   printfi_filtered (spaces, "name '%s' (",
-		    TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
-  gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
+		    type->name () ? type->name () : "<NULL>");
+  gdb_print_host_address (type->name (), gdb_stdout);
   printf_filtered (")\n");
   printfi_filtered (spaces, "code 0x%x ", type->code ());
   switch (type->code ())
@@ -5289,8 +5289,8 @@ copy_type_recursive (struct objfile *objfile,
   TYPE_OBJFILE_OWNED (new_type) = 0;
   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
 
-  if (TYPE_NAME (type))
-    new_type->set_name (xstrdup (TYPE_NAME (type)));
+  if (type->name ())
+    new_type->set_name (xstrdup (type->name ()));
 
   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index aeed06ba5da..ba8e6f837aa 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -1416,7 +1416,6 @@ extern void allocate_gnat_aux_type (struct type *);
 
 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
-#define TYPE_NAME(thistype) ((thistype)->name ())
 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
@@ -1703,13 +1702,13 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
    if the type has no name.  */
 
 #define TYPE_SAFE_NAME(type) \
-  (TYPE_NAME (type) ? TYPE_NAME (type) : _("<unnamed type>"))
+  (type->name () != nullptr ? type->name () : _("<unnamed type>"))
 
 /* * A helper macro that returns the name of an error type.  If the
    type has a name, it is used; otherwise, a default is used.  */
 
 #define TYPE_ERROR_NAME(type) \
-  (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>"))
+  (type->name () ? type->name () : _("<error type>"))
 
 /* Given TYPE, return its floatformat.  */
 const struct floatformat *floatformat_from_type (const struct type *type);
diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c
index bf438a8ea6e..d4cf6b95629 100644
--- a/gdb/gnu-v2-abi.c
+++ b/gdb/gnu-v2-abi.c
@@ -325,10 +325,10 @@ vb_match (struct type *type, int index, struct type *basetype)
   if (TYPE_TARGET_TYPE (fieldtype) == basetype)
     return 1;
 
-  if (TYPE_NAME (basetype) != NULL
-      && TYPE_NAME (TYPE_TARGET_TYPE (fieldtype)) != NULL
-      && strcmp (TYPE_NAME (basetype),
-		 TYPE_NAME (TYPE_TARGET_TYPE (fieldtype))) == 0)
+  if (basetype->name () != NULL
+      && TYPE_TARGET_TYPE (fieldtype)->name () != NULL
+      && strcmp (basetype->name (),
+		 TYPE_TARGET_TYPE (fieldtype)->name ()) == 0)
     return 1;
   return 0;
 }
diff --git a/gdb/go-lang.c b/gdb/go-lang.c
index 373c12db516..366ac368333 100644
--- a/gdb/go-lang.c
+++ b/gdb/go-lang.c
@@ -92,7 +92,7 @@ gccgo_string_p (struct type *type)
 
 	  if (target_type->code () == TYPE_CODE_INT
 	      && TYPE_LENGTH (target_type) == 1
-	      && strcmp (TYPE_NAME (target_type), "uint8") == 0)
+	      && strcmp (target_type->name (), "uint8") == 0)
 	    return 1;
 	}
     }
@@ -107,8 +107,8 @@ static int
 sixg_string_p (struct type *type)
 {
   if (TYPE_NFIELDS (type) == 2
-      && TYPE_NAME (type) != NULL
-      && strcmp (TYPE_NAME (type), "string") == 0)
+      && type->name () != NULL
+      && strcmp (type->name (), "string") == 0)
     return 1;
 
   return 0;
diff --git a/gdb/guile/scm-type.c b/gdb/guile/scm-type.c
index 521f484b081..6ea6a3140cf 100644
--- a/gdb/guile/scm-type.c
+++ b/gdb/guile/scm-type.c
@@ -580,7 +580,7 @@ gdbscm_type_tag (SCM self)
   if (type->code () == TYPE_CODE_STRUCT
       || type->code () == TYPE_CODE_UNION
       || type->code () == TYPE_CODE_ENUM)
-    tagname = TYPE_NAME (type);
+    tagname = type->name ();
 
   if (tagname == nullptr)
     return SCM_BOOL_F;
@@ -597,9 +597,9 @@ gdbscm_type_name (SCM self)
     = tyscm_get_type_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
   struct type *type = t_smob->type;
 
-  if (!TYPE_NAME (type))
+  if (!type->name ())
     return SCM_BOOL_F;
-  return gdbscm_scm_from_c_string (TYPE_NAME (type));
+  return gdbscm_scm_from_c_string (type->name ());
 }
 
 /* (type-print-name <gdb:type>) -> string
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 818b6cb9483..8da843a0190 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -1062,11 +1062,11 @@ call_function_by_hand_dummy (struct value *function,
       auto info = language_pass_by_reference (param_type);
       if (!info.copy_constructible)
 	error (_("expression cannot be evaluated because the type '%s' "
-		 "is not copy constructible"), TYPE_NAME (param_type));
+		 "is not copy constructible"), param_type->name ());
 
       if (!info.destructible)
 	error (_("expression cannot be evaluated because the type '%s' "
-		 "is not destructible"), TYPE_NAME (param_type));
+		 "is not destructible"), param_type->name ());
 
       if (info.trivially_copyable)
 	continue;
@@ -1091,14 +1091,14 @@ call_function_by_hand_dummy (struct value *function,
 	  value *copy_ctor;
 	  value *cctor_args[2] = { clone_ptr, original_arg };
 	  find_overload_match (gdb::make_array_view (cctor_args, 2),
-			       TYPE_NAME (param_type), METHOD,
+			       param_type->name (), METHOD,
 			       &clone_ptr, nullptr, &copy_ctor, nullptr,
 			       nullptr, 0, EVAL_NORMAL);
 
 	  if (copy_ctor == nullptr)
 	    error (_("expression cannot be evaluated because a copy "
 		     "constructor for the type '%s' could not be found "
-		     "(maybe inlined?)"), TYPE_NAME (param_type));
+		     "(maybe inlined?)"), param_type->name ());
 
 	  call_function_by_hand (copy_ctor, default_return_type,
 				 gdb::make_array_view (cctor_args, 2));
@@ -1130,7 +1130,7 @@ call_function_by_hand_dummy (struct value *function,
 	  if (dtor_name == nullptr)
 	    error (_("expression cannot be evaluated because a destructor "
 		     "for the type '%s' could not be found "
-		     "(maybe inlined?)"), TYPE_NAME (param_type));
+		     "(maybe inlined?)"), param_type->name ());
 
 	  value *dtor
 	    = find_function_in_inferior (dtor_name, 0);
diff --git a/gdb/language.c b/gdb/language.c
index a7ecb7963ba..17de9fc59fc 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -999,7 +999,7 @@ language_lookup_primitive_type_1 (const struct language_arch_info *lai,
 
   for (p = lai->primitive_type_vector; (*p) != NULL; p++)
     {
-      if (strcmp (TYPE_NAME (*p), name) == 0)
+      if (strcmp ((*p)->name (), name) == 0)
 	return p;
     }
   return NULL;
@@ -1037,7 +1037,7 @@ language_alloc_type_symbol (enum language lang, struct type *type)
   gdbarch = TYPE_OWNER (type).gdbarch;
   symbol = new (gdbarch_obstack (gdbarch)) struct symbol ();
 
-  symbol->m_name = TYPE_NAME (type);
+  symbol->m_name = type->name ();
   symbol->set_language (lang, nullptr);
   symbol->owner.arch = gdbarch;
   SYMBOL_OBJFILE_OWNED (symbol) = 0;
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 1e70cdb0dca..c59c30e262e 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -1222,7 +1222,7 @@ find_methods (struct type *t, enum language t_lang, const char *name,
 	      std::vector<struct type *> *superclasses)
 {
   int ibase;
-  const char *class_name = TYPE_NAME (t);
+  const char *class_name = t->name ();
 
   /* Ignore this class if it doesn't have a name.  This is ugly, but
      unless we figure out how to get the physname without the name of
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index 7f0255b22d8..5912670a9f0 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -271,9 +271,9 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp,
       else
 	if (type->code () != TYPE_CODE_ARRAY)
 	  {
-	    if (TYPE_NAME (type))
+	    if (type->name ())
 	      error (_("cannot subscript something of type `%s'"),
-		     TYPE_NAME (type));
+		     type->name ());
 	    else
 	      error (_("cannot subscript requested type"));
 	  }
diff --git a/gdb/m2-typeprint.c b/gdb/m2-typeprint.c
index 1f1300c8f23..99222993f4a 100644
--- a/gdb/m2-typeprint.c
+++ b/gdb/m2-typeprint.c
@@ -163,8 +163,8 @@ m2_print_typedef (struct type *type, struct symbol *new_symbol,
 {
   type = check_typedef (type);
   fprintf_filtered (stream, "TYPE ");
-  if (!TYPE_NAME (SYMBOL_TYPE (new_symbol))
-      || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))),
+  if (!SYMBOL_TYPE (new_symbol)->name ()
+      || strcmp ((SYMBOL_TYPE (new_symbol))->name (),
 		 new_symbol->linkage_name ()) != 0)
     fprintf_filtered (stream, "%s = ", new_symbol->print_name ());
   else
@@ -178,8 +178,8 @@ m2_print_typedef (struct type *type, struct symbol *new_symbol,
 void
 m2_type_name (struct type *type, struct ui_file *stream)
 {
-  if (TYPE_NAME (type) != NULL)
-    fputs_filtered (TYPE_NAME (type), stream);
+  if (type->name () != NULL)
+    fputs_filtered (type->name (), stream);
 }
 
 /* m2_range - displays a Modula-2 subrange type.  */
@@ -211,9 +211,9 @@ static void
 m2_typedef (struct type *type, struct ui_file *stream, int show,
 	    int level, const struct type_print_options *flags)
 {
-  if (TYPE_NAME (type) != NULL)
+  if (type->name () != NULL)
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       fputs_filtered (" = ", stream);
     }
   m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
@@ -440,9 +440,9 @@ m2_long_set (struct type *type, struct ui_file *stream, int show, int level,
 
   if (m2_is_long_set (type))
     {
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show == 0)
 	    return 1;
 	  fputs_filtered (" = ", stream);
@@ -530,11 +530,11 @@ m2_record_fields (struct type *type, struct ui_file *stream, int show,
 		  int level, const struct type_print_options *flags)
 {
   /* Print the tag if it exists.  */
-  if (TYPE_NAME (type) != NULL)
+  if (type->name () != NULL)
     {
-      if (!startswith (TYPE_NAME (type), "$$"))
+      if (!startswith (type->name (), "$$"))
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show > 0)
 	    fprintf_filtered (stream, " = ");
 	}
@@ -595,10 +595,10 @@ m2_enum (struct type *type, struct ui_file *stream, int show, int level)
   if (show < 0)
     {
       /* If we just printed a tag name, no need to print anything else.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	fprintf_filtered (stream, "(...)");
     }
-  else if (show > 0 || TYPE_NAME (type) == NULL)
+  else if (show > 0 || type->name () == NULL)
     {
       fprintf_filtered (stream, "(");
       len = TYPE_NFIELDS (type);
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 73654d531e5..163f9cdacfe 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -1296,7 +1296,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
       add_symbol (s, top_stack->cur_st, top_stack->cur_block);
 
       /* Incomplete definitions of structs should not get a name.  */
-      if (TYPE_NAME (SYMBOL_TYPE (s)) == NULL
+      if (SYMBOL_TYPE (s)->name () == NULL
 	  && (TYPE_NFIELDS (SYMBOL_TYPE (s)) != 0
 	      || (SYMBOL_TYPE (s)->code () != TYPE_CODE_STRUCT
 		  && SYMBOL_TYPE (s)->code () != TYPE_CODE_UNION)))
@@ -1675,8 +1675,8 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 	     (.Fxx or .xxfake or empty) for unnamed struct/union/enums.  */
 	  if (name[0] == '.' || name[0] == '\0')
 	    tp->set_name (NULL);
-	  else if (TYPE_NAME (tp) == NULL
-		   || strcmp (TYPE_NAME (tp), name) != 0)
+	  else if (tp->name () == NULL
+		   || strcmp (tp->name (), name) != 0)
 	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
 					  name));
 	}
@@ -1711,8 +1711,8 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 	      bad_tag_guess_complaint (sym_name);
 	      tp->set_code (type_code);
 	    }
-	  if (TYPE_NAME (tp) == NULL
-	      || strcmp (TYPE_NAME (tp), name) != 0)
+	  if (tp->name () == NULL
+	      || strcmp (tp->name (), name) != 0)
 	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
 					  name));
 	}
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
index d686c6ea922..ae95d77f255 100644
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -1008,7 +1008,7 @@ opencl_print_type (struct type *type, const char *varstring,
     {
       type = check_typedef (type);
       if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
-	  && TYPE_NAME (type) != NULL)
+	  && type->name () != NULL)
 	show = 0;
     }
 
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index e332fe9e0db..6403e410571 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -669,7 +669,7 @@ qualified_name:	typebase COLONCOLON name
 			  if (type->code () != TYPE_CODE_STRUCT
 			      && type->code () != TYPE_CODE_UNION)
 			    error (_("`%s' is not defined as an aggregate type."),
-				   TYPE_NAME (type));
+				   type->name ());
 
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
diff --git a/gdb/p-typeprint.c b/gdb/p-typeprint.c
index 4d6eb264044..05e28a49d3e 100644
--- a/gdb/p-typeprint.c
+++ b/gdb/p-typeprint.c
@@ -140,7 +140,7 @@ pascal_type_print_derivation_info (struct ui_file *stream, struct type *type)
       fprintf_filtered (stream, "%s%s ",
 			BASETYPE_VIA_PUBLIC (type, i) ? "public" : "private",
 			BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : "");
-      name = TYPE_NAME (TYPE_BASECLASS (type, i));
+      name = TYPE_BASECLASS (type, i)->name ();
       fprintf_filtered (stream, "%s", name ? name : "(null)");
     }
   if (i > 0)
@@ -211,7 +211,7 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -377,7 +377,7 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
@@ -479,7 +479,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
   if ((type->code () == TYPE_CODE_PTR)
       && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_VOID))
     {
-      fputs_filtered (TYPE_NAME (type) ? TYPE_NAME (type) : "pointer",
+      fputs_filtered (type->name () ? type->name () : "pointer",
 		      stream);
       return;
     }
@@ -487,9 +487,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
      just print the type name directly from the type.  */
 
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       return;
     }
 
@@ -523,9 +523,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
          only after args !!  */
       break;
     case TYPE_CODE_STRUCT:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  fputs_filtered (" = ", stream);
 	}
       if (HAVE_CPLUS_STRUCT (type))
@@ -539,9 +539,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       goto struct_union;
 
     case TYPE_CODE_UNION:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  fputs_filtered (" = ", stream);
 	}
       fprintf_filtered (stream, "case <?> of ");
@@ -551,10 +551,10 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       if (show < 0)
 	{
 	  /* If we just printed a tag name, no need to print anything else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "{...}");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  pascal_type_print_derivation_info (stream, type);
 
@@ -739,9 +739,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       break;
 
     case TYPE_CODE_ENUM:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show > 0)
 	    fputs_filtered (" ", stream);
 	}
@@ -752,10 +752,10 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       if (show < 0)
 	{
 	  /* If we just printed a tag name, no need to print anything else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "(...)");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  fprintf_filtered (stream, "(");
 	  len = TYPE_NFIELDS (type);
@@ -818,9 +818,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
          such as fundamental types.  For these, just print whatever
          the type name is, as recorded in the type itself.  If there
          is no type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	}
       else
 	{
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
index 8172e049233..44dcbf9dc42 100644
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -423,9 +423,9 @@ pascal_value_print (struct value *val, struct ui_file *stream,
       /* Hack:  remove (char *) for char strings.  Their
          type is indicated by the quoted string anyway.  */
       if (type->code () == TYPE_CODE_PTR
-	  && TYPE_NAME (type) == NULL
-	  && TYPE_NAME (TYPE_TARGET_TYPE (type)) != NULL
-	  && strcmp (TYPE_NAME (TYPE_TARGET_TYPE (type)), "char") == 0)
+	  && type->name () == NULL
+	  && TYPE_TARGET_TYPE (type)->name () != NULL
+	  && strcmp (TYPE_TARGET_TYPE (type)->name (), "char") == 0)
 	{
 	  /* Print nothing.  */
 	}
@@ -469,7 +469,7 @@ const char pascal_vtbl_ptr_name[] =
 int
 pascal_object_is_vtbl_ptr_type (struct type *type)
 {
-  const char *type_name = TYPE_NAME (type);
+  const char *type_name = type->name ();
 
   return (type_name != NULL
 	  && strcmp (type_name, pascal_vtbl_ptr_name) == 0);
@@ -564,7 +564,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
 		  fprintf_filtered (stream, "\n");
 		  print_spaces_filtered (2 + 2 * recurse, stream);
 		  fputs_filtered ("members of ", stream);
-		  fputs_filtered (TYPE_NAME (type), stream);
+		  fputs_filtered (type->name (), stream);
 		  fputs_filtered (": ", stream);
 		}
 	    }
@@ -710,7 +710,7 @@ pascal_object_print_value (struct value *val, struct ui_file *stream,
     {
       LONGEST boffset = 0;
       struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
-      const char *basename = TYPE_NAME (baseclass);
+      const char *basename = baseclass->name ();
       int skip = 0;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index e62ff57d0fc..4b57e1638ed 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -393,9 +393,9 @@ typy_get_name (PyObject *self, void *closure)
 {
   struct type *type = ((type_object *) self)->type;
 
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     Py_RETURN_NONE;
-  return PyString_FromString (TYPE_NAME (type));
+  return PyString_FromString (type->name ());
 }
 
 /* Return the type's tag, or None.  */
@@ -408,7 +408,7 @@ typy_get_tag (PyObject *self, void *closure)
   if (type->code () == TYPE_CODE_STRUCT
       || type->code () == TYPE_CODE_UNION
       || type->code () == TYPE_CODE_ENUM)
-    tagname = TYPE_NAME (type);
+    tagname = type->name ();
 
   if (tagname == nullptr)
     Py_RETURN_NONE;
@@ -875,7 +875,7 @@ typy_legacy_template_argument (struct type *type, const struct block *block,
   std::string err;
   struct type *argtype;
 
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     {
       PyErr_SetString (PyExc_RuntimeError, _("Null type name."));
       return NULL;
@@ -884,7 +884,7 @@ typy_legacy_template_argument (struct type *type, const struct block *block,
   try
     {
       /* Note -- this is not thread-safe.  */
-      info = cp_demangled_name_to_comp (TYPE_NAME (type), &err);
+      info = cp_demangled_name_to_comp (type->name (), &err);
     }
   catch (const gdb_exception &except)
     {
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 417d61cf178..6a4359d0f36 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -1392,7 +1392,7 @@ register_dump::dump (ui_file *file)
 	  {
 	    static const char blt[] = "builtin_type";
 
-	    t = TYPE_NAME (register_type (m_gdbarch, regnum));
+	    t = register_type (m_gdbarch, regnum)->name ();
 	    if (t == NULL)
 	      {
 		if (!footnote_register_type_name_null)
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index e4edd7ca3e8..dae6520f1f8 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -576,8 +576,8 @@ riscv_register_type (struct gdbarch *gdbarch, int regnum)
       if (flen == 8
           && type->code () == TYPE_CODE_FLT
           && TYPE_LENGTH (type) == flen
-          && (strcmp (TYPE_NAME (type), "builtin_type_ieee_double") == 0
-              || strcmp (TYPE_NAME (type), "double") == 0))
+          && (strcmp (type->name (), "builtin_type_ieee_double") == 0
+              || strcmp (type->name (), "double") == 0))
         type = riscv_fpreg_d_type (gdbarch);
     }
 
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index 3fa550d7694..2c76762eff2 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -110,8 +110,8 @@ rust_tuple_type_p (struct type *type)
      nothing else in the debuginfo to distinguish a tuple from a
      struct.  */
   return (type->code () == TYPE_CODE_STRUCT
-	  && TYPE_NAME (type) != NULL
-	  && TYPE_NAME (type)[0] == '(');
+	  && type->name () != NULL
+	  && type->name ()[0] == '(');
 }
 
 /* Return true if all non-static fields of a structlike type are in a
@@ -158,9 +158,9 @@ static bool
 rust_slice_type_p (struct type *type)
 {
   return (type->code () == TYPE_CODE_STRUCT
-	  && TYPE_NAME (type) != NULL
-	  && (strncmp (TYPE_NAME (type), "&[", 2) == 0
-	      || strcmp (TYPE_NAME (type), "&str") == 0));
+	  && type->name () != NULL
+	  && (strncmp (type->name (), "&[", 2) == 0
+	      || strcmp (type->name (), "&str") == 0));
 }
 
 /* Return true if TYPE is a range type, otherwise false.  */
@@ -172,8 +172,8 @@ rust_range_type_p (struct type *type)
 
   if (type->code () != TYPE_CODE_STRUCT
       || TYPE_NFIELDS (type) > 2
-      || TYPE_NAME (type) == NULL
-      || strstr (TYPE_NAME (type), "::Range") == NULL)
+      || type->name () == NULL
+      || strstr (type->name (), "::Range") == NULL)
     return false;
 
   if (TYPE_NFIELDS (type) == 0)
@@ -202,8 +202,8 @@ rust_range_type_p (struct type *type)
 static bool
 rust_inclusive_range_type_p (struct type *type)
 {
-  return (strstr (TYPE_NAME (type), "::RangeInclusive") != NULL
-	  || strstr (TYPE_NAME (type), "::RangeToInclusive") != NULL);
+  return (strstr (type->name (), "::RangeInclusive") != NULL
+	  || strstr (type->name (), "::RangeToInclusive") != NULL);
 }
 
 /* Return true if TYPE seems to be the type "u8", otherwise false.  */
@@ -243,7 +243,7 @@ rust_is_string_type_p (struct type *type)
 	  || (type->code () == TYPE_CODE_STRUCT
 	      && !rust_enum_p (type)
 	      && rust_slice_type_p (type)
-	      && strcmp (TYPE_NAME (type), "&str") == 0));
+	      && strcmp (type->name (), "&str") == 0));
 }
 
 /* If VALUE represents a trait object pointer, return the underlying
@@ -379,7 +379,7 @@ val_print_struct (struct value *val, struct ui_file *stream, int recurse,
   int first_field;
   struct type *type = check_typedef (value_type (val));
 
-  if (rust_slice_type_p (type) && strcmp (TYPE_NAME (type), "&str") == 0)
+  if (rust_slice_type_p (type) && strcmp (type->name (), "&str") == 0)
     {
       /* If what we are printing here is actually a string within a
 	 structure then VAL will be the original parent value, while TYPE
@@ -399,13 +399,13 @@ val_print_struct (struct value *val, struct ui_file *stream, int recurse,
 
   if (!is_tuple)
     {
-      if (TYPE_NAME (type) != NULL)
-        fprintf_filtered (stream, "%s", TYPE_NAME (type));
+      if (type->name () != NULL)
+        fprintf_filtered (stream, "%s", type->name ());
 
       if (TYPE_NFIELDS (type) == 0)
         return;
 
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
         fputs_filtered (" ", stream);
     }
 
@@ -479,7 +479,7 @@ rust_print_enum (struct value *val, struct ui_file *stream, int recurse,
     {
       /* Print the enum type name here to be more clear.  */
       fprintf_filtered (stream, _("%s {%p[<No data fields>%p]}"),
-			TYPE_NAME (type),
+			type->name (),
 			metadata_style.style ().ptr (), nullptr);
       return;
     }
@@ -492,7 +492,7 @@ rust_print_enum (struct value *val, struct ui_file *stream, int recurse,
 
   bool is_tuple = rust_tuple_struct_type_p (variant_type);
 
-  fprintf_filtered (stream, "%s", TYPE_NAME (variant_type));
+  fprintf_filtered (stream, "%s", variant_type->name ());
   if (nfields == 0)
     {
       /* In case of a nullary variant like 'None', just output
@@ -599,7 +599,7 @@ rust_value_print_inner (struct value *val, struct ui_file *stream,
     case TYPE_CODE_INT:
       /* Recognize the unit type.  */
       if (TYPE_UNSIGNED (type) && TYPE_LENGTH (type) == 0
-	  && TYPE_NAME (type) != NULL && strcmp (TYPE_NAME (type), "()") == 0)
+	  && type->name () != NULL && strcmp (type->name (), "()") == 0)
 	{
 	  fputs_filtered ("()", stream);
 	  break;
@@ -676,7 +676,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
   /* Print a tuple type simply.  */
   if (rust_tuple_type_p (type))
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       return;
     }
 
@@ -693,7 +693,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
 
   /* Compute properties of TYPE here because, in the enum case, the
      rest of the code ends up looking only at the variant part.  */
-  const char *tagname = TYPE_NAME (type);
+  const char *tagname = type->name ();
   bool is_tuple_struct = rust_tuple_struct_type_p (type);
   bool is_tuple = rust_tuple_type_p (type);
   bool is_enum = rust_enum_p (type);
@@ -824,14 +824,14 @@ rust_internal_print_type (struct type *type, const char *varstring,
 {
   QUIT;
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
       /* Rust calls the unit type "void" in its debuginfo,
          but we don't want to print it as that.  */
       if (type->code () == TYPE_CODE_VOID)
         fputs_filtered ("()", stream);
       else
-        fputs_filtered (TYPE_NAME (type), stream);
+        fputs_filtered (type->name (), stream);
       return;
     }
 
@@ -903,11 +903,11 @@ rust_internal_print_type (struct type *type, const char *varstring,
 	int len = 0;
 
 	fputs_filtered ("enum ", stream);
-	if (TYPE_NAME (type) != NULL)
+	if (type->name () != NULL)
 	  {
-	    fputs_filtered (TYPE_NAME (type), stream);
+	    fputs_filtered (type->name (), stream);
 	    fputs_filtered (" ", stream);
-	    len = strlen (TYPE_NAME (type));
+	    len = strlen (type->name ());
 	  }
 	fputs_filtered ("{\n", stream);
 
@@ -918,7 +918,7 @@ rust_internal_print_type (struct type *type, const char *varstring,
 	    QUIT;
 
 	    if (len > 0
-		&& strncmp (name, TYPE_NAME (type), len) == 0
+		&& strncmp (name, type->name (), len) == 0
 		&& name[len] == ':'
 		&& name[len + 1] == ':')
 	      name += len + 2;
@@ -933,8 +933,8 @@ rust_internal_print_type (struct type *type, const char *varstring,
 
     case TYPE_CODE_PTR:
       {
-	if (TYPE_NAME (type) != nullptr)
-	  fputs_filtered (TYPE_NAME (type), stream);
+	if (type->name () != nullptr)
+	  fputs_filtered (type->name (), stream);
 	else
 	  {
 	    /* We currently can't distinguish between pointers and
@@ -1160,10 +1160,10 @@ rust_evaluate_funcall (struct expression *exp, int *pos, enum noside noside)
        && type->code () != TYPE_CODE_ENUM)
       || rust_tuple_type_p (type))
     error (_("Method calls only supported on struct or enum types"));
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     error (_("Method call on nameless type"));
 
-  std::string name = std::string (TYPE_NAME (type)) + "::" + method;
+  std::string name = std::string (type->name ()) + "::" + method;
 
   block = get_selected_block (0);
   sym = lookup_symbol (name.c_str (), block, VAR_DOMAIN, NULL);
@@ -1465,7 +1465,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
 						  "usize");
 	  const char *new_name = ((type != nullptr
 				   && rust_slice_type_p (type))
-				  ? TYPE_NAME (type) : "&[*gdb*]");
+				  ? type->name () : "&[*gdb*]");
 
 	  slice = rust_slice_type (new_name, value_type (result), usize);
 
@@ -1667,7 +1667,7 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp,
 
 		if (rust_empty_enum_p (type))
 		  error (_("Cannot access field %d of empty enum %s"),
-			 field_number, TYPE_NAME (type));
+			 field_number, type->name ());
 
 		int fieldno = rust_enum_variant (type);
 		lhs = value_primitive_field (lhs, 0, fieldno, type);
@@ -1683,13 +1683,13 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp,
 		if (outer_type != NULL)
 		  error(_("Cannot access field %d of variant %s::%s, "
 			  "there are only %d fields"),
-			field_number, TYPE_NAME (outer_type),
-			rust_last_path_segment (TYPE_NAME (type)),
+			field_number, outer_type->name (),
+			rust_last_path_segment (type->name ()),
 			nfields);
 		else
 		  error(_("Cannot access field %d of %s, "
 			  "there are only %d fields"),
-			field_number, TYPE_NAME (type), nfields);
+			field_number, type->name (), nfields);
 	      }
 
 	    /* Tuples are tuple structs too.  */
@@ -1697,13 +1697,13 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp,
 	      {
 		if (outer_type != NULL)
 		  error(_("Variant %s::%s is not a tuple variant"),
-			TYPE_NAME (outer_type),
-			rust_last_path_segment (TYPE_NAME (type)));
+			outer_type->name (),
+			rust_last_path_segment (type->name ()));
 		else
 		  error(_("Attempting to access anonymous field %d "
 			  "of %s, which is not a tuple, tuple struct, or "
 			  "tuple-like variant"),
-		      field_number, TYPE_NAME (type));
+		      field_number, type->name ());
 	      }
 
 	    result = value_primitive_field (lhs, 0, field_number, type);
@@ -1735,7 +1735,7 @@ tuple structs, and tuple-like enum variants"));
 
 	    if (rust_empty_enum_p (type))
 	      error (_("Cannot access field %s of empty enum %s"),
-		     field_name, TYPE_NAME (type));
+		     field_name, type->name ());
 
 	    int fieldno = rust_enum_variant (type);
 	    lhs = value_primitive_field (lhs, 0, fieldno, type);
@@ -1745,8 +1745,8 @@ tuple structs, and tuple-like enum variants"));
 	    if (rust_tuple_type_p (type) || rust_tuple_struct_type_p (type))
 		error (_("Attempting to access named field %s of tuple "
 			 "variant %s::%s, which has only anonymous fields"),
-		       field_name, TYPE_NAME (outer_type),
-		       rust_last_path_segment (TYPE_NAME (type)));
+		       field_name, outer_type->name (),
+		       rust_last_path_segment (type->name ()));
 
 	    try
 	      {
@@ -1756,8 +1756,8 @@ tuple structs, and tuple-like enum variants"));
 	    catch (const gdb_exception_error &except)
 	      {
 		error (_("Could not find field %s of struct variant %s::%s"),
-		       field_name, TYPE_NAME (outer_type),
-		       rust_last_path_segment (TYPE_NAME (type)));
+		       field_name, outer_type->name (),
+		       rust_last_path_segment (type->name ()));
 	      }
 	  }
 	else
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index a453e0214e2..744a8bbd274 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -1238,7 +1238,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          a base type which did not have its name defined when the
          derived class was output.  We fill in the derived class's
          base part member's name here in that case.  */
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
+      if (SYMBOL_TYPE (sym)->name () != NULL)
 	if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_STRUCT
 	     || SYMBOL_TYPE (sym)->code () == TYPE_CODE_UNION)
 	    && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
@@ -1248,10 +1248,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 	    for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
 	      if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
 		TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
-		  TYPE_NAME (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
+		  TYPE_BASECLASS (SYMBOL_TYPE (sym), j)->name ();
 	  }
 
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
+      if (SYMBOL_TYPE (sym)->name () == NULL)
 	{
 	  if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
 	       && strcmp (sym->linkage_name (), vtbl_ptr_name))
@@ -1311,7 +1311,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
           SYMBOL_ACLASS_INDEX (struct_sym) = LOC_TYPEDEF;
           SYMBOL_VALUE (struct_sym) = valu;
           SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
-          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+          if (SYMBOL_TYPE (sym)->name () == 0)
 	    SYMBOL_TYPE (sym)->set_name
 	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
 			 (char *) NULL));
@@ -1338,7 +1338,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+      if (SYMBOL_TYPE (sym)->name () == 0)
 	SYMBOL_TYPE (sym)->set_name
 	  (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
 		     (char *) NULL));
@@ -1353,7 +1353,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 	  SYMBOL_ACLASS_INDEX (typedef_sym) = LOC_TYPEDEF;
 	  SYMBOL_VALUE (typedef_sym) = valu;
 	  SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (SYMBOL_TYPE (sym)->name () == 0)
 	    SYMBOL_TYPE (sym)->set_name
 	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
 			 (char *) NULL));
@@ -2748,7 +2748,7 @@ read_cpp_abbrev (struct stab_field_info *fip, const char **pp,
       switch (cpp_abbrev)
 	{
 	case 'f':		/* $vf -- a virtual function table pointer */
-	  name = TYPE_NAME (context);
+	  name = context->name ();
 	  if (name == NULL)
 	    {
 	      name = "";
@@ -2758,7 +2758,7 @@ read_cpp_abbrev (struct stab_field_info *fip, const char **pp,
 	  break;
 
 	case 'b':		/* $vb -- a virtual bsomethingorother */
-	  name = TYPE_NAME (context);
+	  name = context->name ();
 	  if (name == NULL)
 	    {
 	      complaint (_("C++ abbreviated type name "
@@ -3161,7 +3161,7 @@ read_baseclasses (struct stab_field_info *fip, const char **pp,
          field's name.  */
 
       newobj->field.type = read_type (pp, objfile);
-      newobj->field.name = TYPE_NAME (newobj->field.type);
+      newobj->field.name = newobj->field.type->name ();
 
       /* Skip trailing ';' and bump count of number of fields seen.  */
       if (**pp == ';')
@@ -3248,7 +3248,7 @@ read_tilde_fields (struct stab_field_info *fip, const char **pp,
 	      /* Virtual function table field not found.  */
 	      complaint (_("virtual function table pointer "
 			   "not found when defining class `%s'"),
-			 TYPE_NAME (type));
+			 type->name ());
 	      return 0;
 	    }
 	  else
@@ -3377,9 +3377,9 @@ complain_about_struct_wipeout (struct type *type)
   const char *name = "";
   const char *kind = "";
 
-  if (TYPE_NAME (type))
+  if (type->name ())
     {
-      name = TYPE_NAME (type);
+      name = type->name ();
       switch (type->code ())
         {
         case TYPE_CODE_STRUCT: kind = "struct "; break;
@@ -4408,7 +4408,7 @@ add_undefined_type_1 (struct type *type)
 static void
 add_undefined_type (struct type *type, int typenums[2])
 {
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     add_undefined_type_noname (type, typenums);
   else
     add_undefined_type_1 (type);
@@ -4493,7 +4493,7 @@ cleanup_undefined_types_1 (void)
 		struct pending *ppt;
 		int i;
 		/* Name of the type, without "struct" or "union".  */
-		const char *type_name = TYPE_NAME (*type);
+		const char *type_name = (*type)->name ();
 
 		if (type_name == NULL)
 		  {
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index ebbedef7b97..fc56cfa9381 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -556,7 +556,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 
   if (SYMBOL_DOMAIN (symbol) == STRUCT_DOMAIN)
     {
-      if (TYPE_NAME (SYMBOL_TYPE (symbol)))
+      if (SYMBOL_TYPE (symbol)->name ())
 	{
 	  LA_PRINT_TYPE (SYMBOL_TYPE (symbol), "", outfile, 1, depth,
 			 &type_print_raw_options);
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 2043d084140..1fb56b5ebd1 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -595,7 +595,7 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
   struct fn_field *method = &f[signature_id];
   const char *field_name = TYPE_FN_FIELDLIST_NAME (type, method_id);
   const char *physname = TYPE_FN_FIELD_PHYSNAME (f, signature_id);
-  const char *newname = TYPE_NAME (type);
+  const char *newname = type->name ();
 
   /* Does the form of physname indicate that it is the full mangled name
      of a constructor (not just the args)?  */
diff --git a/gdb/valarith.c b/gdb/valarith.c
index f1e1d6e9cce..82e63a33cbb 100644
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -60,7 +60,7 @@ find_size_for_pointer_math (struct type *ptr_type)
 	{
 	  const char *name;
 	  
-	  name = TYPE_NAME (ptr_target);
+	  name = ptr_target->name ();
 	  if (name == NULL)
 	    error (_("Cannot perform pointer math on incomplete types, "
 		   "try casting to a known type, or void *."));
@@ -888,8 +888,8 @@ value_args_as_target_float (struct value *arg1, struct value *arg2,
 	target_float_from_longest (x, *eff_type_x, value_as_long (arg1));
     }
   else
-    error (_("Don't know how to convert from %s to %s."), TYPE_NAME (type1),
-	     TYPE_NAME (type2));
+    error (_("Don't know how to convert from %s to %s."), type1->name (),
+	     type2->name ());
 
   /* Obtain value of arg2, converting from other types if necessary.  */
 
@@ -907,8 +907,8 @@ value_args_as_target_float (struct value *arg1, struct value *arg2,
 	target_float_from_longest (y, *eff_type_y, value_as_long (arg2));
     }
   else
-    error (_("Don't know how to convert from %s to %s."), TYPE_NAME (type1),
-	     TYPE_NAME (type2));
+    error (_("Don't know how to convert from %s to %s."), type1->name (),
+	     type2->name ());
 }
 
 /* A helper function that finds the type to use for a binary operation
diff --git a/gdb/valops.c b/gdb/valops.c
index 5e294823ffd..40c8f34ea1d 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -222,17 +222,17 @@ value_cast_structs (struct type *type, struct value *v2)
 	       || t2->code () == TYPE_CODE_UNION)
 	      && !!"Precondition is that value is of STRUCT or UNION kind");
 
-  if (TYPE_NAME (t1) != NULL
-      && TYPE_NAME (t2) != NULL
-      && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2)))
+  if (t1->name () != NULL
+      && t2->name () != NULL
+      && !strcmp (t1->name (), t2->name ()))
     return NULL;
 
   /* Upcasting: look in the type of the source to see if it contains the
      type of the target as a superclass.  If so, we'll need to
      offset the pointer rather than just change its type.  */
-  if (TYPE_NAME (t1) != NULL)
+  if (t1->name () != NULL)
     {
-      v = search_struct_field (TYPE_NAME (t1),
+      v = search_struct_field (t1->name (),
 			       v2, t2, 1);
       if (v)
 	return v;
@@ -241,7 +241,7 @@ value_cast_structs (struct type *type, struct value *v2)
   /* Downcasting: look in the type of the target to see if it contains the
      type of the source as a superclass.  If so, we'll need to
      offset the pointer rather than just change its type.  */
-  if (TYPE_NAME (t2) != NULL)
+  if (t2->name () != NULL)
     {
       /* Try downcasting using the run-time type of the value.  */
       int full, using_enc;
@@ -257,11 +257,11 @@ value_cast_structs (struct type *type, struct value *v2)
 
 	  /* We might be trying to cast to the outermost enclosing
 	     type, in which case search_struct_field won't work.  */
-	  if (TYPE_NAME (real_type) != NULL
-	      && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1)))
+	  if (real_type->name () != NULL
+	      && !strcmp (real_type->name (), t1->name ()))
 	    return v;
 
-	  v = search_struct_field (TYPE_NAME (t2), v, real_type, 1);
+	  v = search_struct_field (t2->name (), v, real_type, 1);
 	  if (v)
 	    return v;
 	}
@@ -269,7 +269,7 @@ value_cast_structs (struct type *type, struct value *v2)
       /* Try downcasting using information from the destination type
 	 T2.  This wouldn't work properly for classes with virtual
 	 bases, but those were handled above.  */
-      v = search_struct_field (TYPE_NAME (t2),
+      v = search_struct_field (t2->name (),
 			       value_zero (t1, not_lval), t1, 1);
       if (v)
 	{
@@ -443,7 +443,7 @@ value_cast (struct type *type, struct value *arg2)
 
   if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
       && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
-      && TYPE_NAME (type) != 0)
+      && type->name () != 0)
     {
       struct value *v = value_cast_structs (to_type, arg2);
 
@@ -2479,7 +2479,7 @@ find_overload_match (gdb::array_view<value *> args,
       obj = coerce_ref (obj);
       while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
 	obj = coerce_ref (value_ind (obj));
-      obj_type_name = TYPE_NAME (value_type (obj));
+      obj_type_name = value_type (obj)->name ();
 
       /* First check whether this is a data member, e.g. a pointer to
 	 a function.  */
@@ -3141,7 +3141,7 @@ enum_constant_from_type (struct type *type, const char *name)
     }
 
   error (_("no constant named \"%s\" in enum \"%s\""),
-	 name, TYPE_NAME (type));
+	 name, type->name ());
 }
 
 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
@@ -3528,7 +3528,7 @@ value_namespace_elt (const struct type *curtype,
 
   if (retval == NULL)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-	   name, TYPE_NAME (curtype));
+	   name, curtype->name ());
 
   return retval;
 }
@@ -3544,7 +3544,7 @@ value_maybe_namespace_elt (const struct type *curtype,
 			   const char *name, int want_address,
 			   enum noside noside)
 {
-  const char *namespace_name = TYPE_NAME (curtype);
+  const char *namespace_name = curtype->name ();
   struct block_symbol sym;
   struct value *result;
 
@@ -3684,7 +3684,7 @@ value_full_object (struct value *argp,
     {
       warning (_("Couldn't retrieve complete object of RTTI "
 		 "type %s; object may be in register(s)."), 
-	       TYPE_NAME (real_type));
+	       real_type->name ());
 
       return argp;
     }
diff --git a/gdb/value.c b/gdb/value.c
index df14232acd0..cb860509f80 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -1001,9 +1001,9 @@ check_type_length_before_alloc (const struct type *type)
 
   if (max_value_size > -1 && length > max_value_size)
     {
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	error (_("value of type `%s' requires %u bytes, which is more "
-		 "than max-value-size"), TYPE_NAME (type), length);
+		 "than max-value-size"), type->name (), length);
       else
 	error (_("value requires %u bytes, which is more than "
 		 "max-value-size"), length);
-- 
2.26.2



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] gdb: add type::name / type::set_name
  2020-05-14 18:18 [PATCH 1/2] gdb: add type::name / type::set_name Simon Marchi
  2020-05-14 18:18 ` [PATCH 2/2] gdb: remove TYPE_NAME macro Simon Marchi
@ 2020-05-16 15:58 ` Tom Tromey
  1 sibling, 0 replies; 9+ messages in thread
From: Tom Tromey @ 2020-05-16 15:58 UTC (permalink / raw)
  To: Simon Marchi via Gdb-patches; +Cc: Simon Marchi

>>>>> "Simon" == Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:

Simon> Add the `name` and `set_name` methods on `struct type`, in order to
Simon> remove the `TYPE_NAME` macro.  In this patch, the `TYPE_NAME` macro is
Simon> changed to use `type::name`, so all the call sites that are used to set
Simon> the type name are changed to use `type::set_name`.  The next patch will
Simon> remove `TYPE_NAME` completely.

Looks good, thanks.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-14 18:18 ` [PATCH 2/2] gdb: remove TYPE_NAME macro Simon Marchi
@ 2020-05-16 16:00   ` Tom Tromey
  2020-05-16 16:35     ` Simon Marchi
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Tromey @ 2020-05-16 16:00 UTC (permalink / raw)
  To: Simon Marchi via Gdb-patches; +Cc: Simon Marchi

>>>>> "Simon" == Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:

Simon> Remove `TYPE_NAME`, changing all the call sites to use `type::name`
Simon> directly.  This is quite a big diff, but this was mostly done using sed
Simon> and coccinelle.  A few call sites were done by hand.

Looks good.  I didn't realize coccinelle worked on C++.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-16 16:00   ` Tom Tromey
@ 2020-05-16 16:35     ` Simon Marchi
  2020-05-16 18:18       ` Tom Tromey
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Marchi @ 2020-05-16 16:35 UTC (permalink / raw)
  To: Tom Tromey, Simon Marchi via Gdb-patches

On 2020-05-16 12:00 p.m., Tom Tromey wrote:
>>>>>> "Simon" == Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:
> 
> Simon> Remove `TYPE_NAME`, changing all the call sites to use `type::name`
> Simon> directly.  This is quite a big diff, but this was mostly done using sed
> Simon> and coccinelle.  A few call sites were done by hand.
> 
> Looks good.  I didn't realize coccinelle worked on C++.

Thanks, I'll push them in a moment.

No, coccinelle doesn't work on C++ unfortunately.  When there's a C++
construct in a function, it just skips it it seems.  But our codebase
still looks largely like C in a lot of places that it can still do
a significant number of changes.  But what this means is that it will
become less and less effective for us as time goes by :(.

Also, coccinelle doesn't really allow to specify the output code style,
so it just never puts a space before the parenthesis.  I worked around
that by making it use `a_very_unique_string` as the function name in its
output, so I could easily replace it with the desired value with sed:

-  thetype->a_very_unique_string(...)
+  thetype->set_name (...)

The above can also leave out a space in other function calls in the modified
code, for example turning

  TYPE_NAME (thetype) = a_function ();

into

  thetype->set_name (a_function());

So the space after `a_function` needs to be added back by hand, or some sed
to turn `a_function(` into `a_function (`.

While at it, here's the complete method I used, maybe it will help you or somebody
else when making similar changes:

- Add getter / setters, change the TYPE_NAME macro to use the getter.  The compiler
  will point out any spots that are using the macro to set the field.

- A first sed pass to change the obvious spots to use the setter (not essential, but it's
  quick):

  sed -ri 's|TYPE_NAME \(([a-z0-9_]+)\) = ([a-z0-9_"]+)|\1->set_name (\2)|g' *.c */*.c

- Run this coccinelle rule to change some less obvious spots to use the setter

  ---
  @@
  expression type;
  expression value;
  @@
  - TYPE_NAME(type) = value
  + type->a_very_unique_string(value)
  ---

  $ spatch --sp-file type-set-name.cocci --in-place <FILES>

  Followed by this sed to replace `a_very_unique_string`:

  $ sed -i "s|a_very_unique_string|set_name |g" <FILES>

- Fix the remaining spots to use the setter by hand.

That should be enough for the first patch.  For the second patch:

- Remove the TYPE_NAME macro.

- A first sed pass:

  sed -ri 's|TYPE_NAME \(([a-z0-9_]+)\)|\1->name ()|g'

- Run this coccinelle rule followed by sed, as mentioned above:

  @@
  expression type;
  @@
  - TYPE_NAME(type)
  + type->a_very_unique_string()

Simon


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-16 16:35     ` Simon Marchi
@ 2020-05-16 18:18       ` Tom Tromey
  2020-05-16 19:10         ` Simon Marchi
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Tromey @ 2020-05-16 18:18 UTC (permalink / raw)
  To: Simon Marchi; +Cc: Tom Tromey, Simon Marchi via Gdb-patches

>>>>> "Simon" == Simon Marchi <simon.marchi@efficios.com> writes:

Simon> No, coccinelle doesn't work on C++ unfortunately.  When there's a C++
Simon> construct in a function, it just skips it it seems.

Aha, cool.

Simon> Also, coccinelle doesn't really allow to specify the output code style,
Simon> so it just never puts a space before the parenthesis.  I worked around
Simon> that by making it use `a_very_unique_string` as the function name in its
Simon> output, so I could easily replace it with the desired value with sed:

Nice hack.

FWIW I wrote some Emacs Lisp to do this kind of transform.  However, it
is mostly ad hoc -- I rewrite bits of it when I need a new change.  I do
have one that does the "function form to method form".

The main drawbacks of this are that elisp is pretty slow, and of course
it's relatively obscure.  One of the big advantages is that I also
taught it to write the ChangeLog entries... :-)

https://github.com/tromey/gdb-refactoring-scripts

For example maybe this one could have been done with

emacs --script .../rewriter.el method TYPE_NAME name

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-16 18:18       ` Tom Tromey
@ 2020-05-16 19:10         ` Simon Marchi
  2020-05-16 19:26           ` Tom Tromey
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Marchi @ 2020-05-16 19:10 UTC (permalink / raw)
  To: Tom Tromey, Simon Marchi; +Cc: Simon Marchi via Gdb-patches

On 2020-05-16 2:18 p.m., Tom Tromey wrote:
>>>>>> "Simon" == Simon Marchi <simon.marchi@efficios.com> writes:
> 
> Simon> No, coccinelle doesn't work on C++ unfortunately.  When there's a C++
> Simon> construct in a function, it just skips it it seems.
> 
> Aha, cool.
> 
> Simon> Also, coccinelle doesn't really allow to specify the output code style,
> Simon> so it just never puts a space before the parenthesis.  I worked around
> Simon> that by making it use `a_very_unique_string` as the function name in its
> Simon> output, so I could easily replace it with the desired value with sed:
> 
> Nice hack.
> 
> FWIW I wrote some Emacs Lisp to do this kind of transform.  However, it
> is mostly ad hoc -- I rewrite bits of it when I need a new change.  I do
> have one that does the "function form to method form".
> 
> The main drawbacks of this are that elisp is pretty slow, and of course
> it's relatively obscure.  One of the big advantages is that I also
> taught it to write the ChangeLog entries... :-)
> 
> https://github.com/tromey/gdb-refactoring-scripts
> 
> For example maybe this one could have been done with
> 
> emacs --script .../rewriter.el method TYPE_NAME name

I'd be curious to run it.  This is what I get, it's probably not expected:

$ emacs --script gdb-refactoring-scripts/rewriter.el method TYPE_NAME name
Loading 00debian-vars...
Loading /etc/emacs/site-start.d/50autoconf.el (source)...
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Loading /etc/emacs/site-start.d/50latex-cjk-common.el (source)...
Loading cjk-enc...
Loading /etc/emacs/site-start.d/50latex-cjk-thai.el (source)...
Loading /etc/emacs/site-start.d/50texlive-lang-english.el (source)...
Loading /home/smarchi/src/binutils-gdb/gdb/gdb-refactoring-scripts/rewriter-method.el (source)...
Symbol's function definition is void: directory-files-recursively

My cwd is gdb's source directory.  Any idea what's going wrong?

Simon


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-16 19:10         ` Simon Marchi
@ 2020-05-16 19:26           ` Tom Tromey
  2020-05-16 19:33             ` Simon Marchi
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Tromey @ 2020-05-16 19:26 UTC (permalink / raw)
  To: Simon Marchi; +Cc: Tom Tromey, Simon Marchi, Simon Marchi via Gdb-patches

Simon> I'd be curious to run it.  This is what I get, it's probably not expected:

Simon> $ emacs --script gdb-refactoring-scripts/rewriter.el method TYPE_NAME name
Simon> Loading 00debian-vars...
Simon> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
Simon> Loading /etc/emacs/site-start.d/50cmake-data.el (source)...

This output is from your system site-lisp and unfortunately can't be
suppressed.

Simon> Symbol's function definition is void: directory-files-recursively

Simon> My cwd is gdb's source directory.  Any idea what's going wrong?

You probably have an older Emacs.
I think this was introduced in Emacs 25 though I'm not 100% sure.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] gdb: remove TYPE_NAME macro
  2020-05-16 19:26           ` Tom Tromey
@ 2020-05-16 19:33             ` Simon Marchi
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Marchi @ 2020-05-16 19:33 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Simon Marchi, Simon Marchi via Gdb-patches

On 2020-05-16 3:26 p.m., Tom Tromey wrote:
> Simon> I'd be curious to run it.  This is what I get, it's probably not expected:
> 
> Simon> $ emacs --script gdb-refactoring-scripts/rewriter.el method TYPE_NAME name
> Simon> Loading 00debian-vars...
> Simon> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Simon> Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
> 
> This output is from your system site-lisp and unfortunately can't be
> suppressed.
> 
> Simon> Symbol's function definition is void: directory-files-recursively
> 
> Simon> My cwd is gdb's source directory.  Any idea what's going wrong?
> 
> You probably have an older Emacs.
> I think this was introduced in Emacs 25 though I'm not 100% sure.

Ah that's it, I was using emacs 24.  With emacs 26 it ran fine.  It works
pretty well!

Simon


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-05-16 19:33 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-14 18:18 [PATCH 1/2] gdb: add type::name / type::set_name Simon Marchi
2020-05-14 18:18 ` [PATCH 2/2] gdb: remove TYPE_NAME macro Simon Marchi
2020-05-16 16:00   ` Tom Tromey
2020-05-16 16:35     ` Simon Marchi
2020-05-16 18:18       ` Tom Tromey
2020-05-16 19:10         ` Simon Marchi
2020-05-16 19:26           ` Tom Tromey
2020-05-16 19:33             ` Simon Marchi
2020-05-16 15:58 ` [PATCH 1/2] gdb: add type::name / type::set_name Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox