Remove TYPE_TAG_NAME
authorTom Tromey <tom@tromey.com>
Tue, 17 Apr 2018 19:51:24 +0000 (13:51 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 1 Jun 2018 16:19:55 +0000 (10:19 -0600)
TYPE_TAG_NAME has been an occasional source of confusion and bugs.  It
seems to me that it is only useful for C and C++ -- but even there,
not so much, because at least with DWARF there doesn't seem to be any
way to wind up with a type where the name and the tag name are both
non-NULL and different.

So, this patch removes TYPE_TAG_NAME entirely.  This should save a
little memory, but more importantly, it simplifies this part of gdb.

A few minor test suite adjustments were needed.  In some situations
the new code does not yield identical output to the old code.

gdb/ChangeLog
2018-06-01  Tom Tromey  <tom@tromey.com>

* valops.c (enum_constant_from_type, value_namespace_elt)
(value_maybe_namespace_elt): Update.
* valarith.c (find_size_for_pointer_math): Update.
* target-descriptions.c (make_gdb_type): Update.
* symmisc.c (print_symbol): Update.
* stabsread.c (define_symbol, read_type)
(complain_about_struct_wipeout, add_undefined_type)
(cleanup_undefined_types_1): Update.
* rust-lang.c (rust_tuple_type_p, rust_slice_type_p)
(rust_range_type_p, val_print_struct, rust_print_struct_def)
(rust_internal_print_type, rust_composite_type)
(rust_evaluate_funcall, rust_evaluate_subexp)
(rust_inclusive_range_type_p): Update.
* python/py-type.c (typy_get_tag): Update.
* p-typeprint.c (pascal_type_print_base): Update.
* mdebugread.c (parse_symbol, parse_type): Update.
* m2-typeprint.c (m2_long_set, m2_record_fields, m2_enum):
Update.
* guile/scm-type.c (gdbscm_type_tag): Update.
* go-lang.c (sixg_string_p): Update.
* gnu-v3-abi.c (build_gdb_vtable_type, build_std_type_info_type):
Update.
* gdbtypes.h (struct main_type) <tag_name>: Remove.
(TYPE_TAG_NAME): Remove.
* gdbtypes.c (type_name_no_tag): Simplify.
(check_typedef, check_types_equal, recursive_dump_type)
(copy_type_recursive, arch_composite_type): Update.
* f-typeprint.c (f_type_print_base): Update.  Print "Type" prefix
in summary mode when needed.
* eval.c (evaluate_funcall): Update.
* dwarf2read.c (fixup_go_packaging, read_structure_type)
(process_structure_scope, read_enumeration_type)
(read_namespace_type, read_module_type, determine_prefix): Update.
* cp-support.c (inspect_type): Update.
* coffread.c (process_coff_symbol, decode_base_type): Update.
* c-varobj.c (c_is_path_expr_parent): Update.
* c-typeprint.c (c_type_print_base_struct_union): Update.
(c_type_print_base_1): Update.  Print struct/class/union/enum in
summary when using C language.
* ax-gdb.c (gen_struct_ref, gen_namespace_elt)
(gen_maybe_namespace_elt): Update.
* ada-lang.c (ada_type_name): Simplify.
(empty_record, ada_template_to_fixed_record_type_1)
(template_to_static_fixed_type)
(to_record_with_fixed_variant_part, ada_check_typedef): Update.

gdb/testsuite/ChangeLog
2018-06-01  Tom Tromey  <tom@tromey.com>

* gdb.xml/tdesc-regs.exp (load_description): Update expected
results.
* gdb.dwarf2/method-ptr.exp: Set language to C++.
* gdb.dwarf2/member-ptr-forwardref.exp: Set language to C++.
* gdb.cp/typeid.exp (do_typeid_tests): Update type_re.
* gdb.base/maint.exp (maint_pass_if): Update.

31 files changed:
gdb/ChangeLog
gdb/ada-lang.c
gdb/ax-gdb.c
gdb/c-typeprint.c
gdb/c-varobj.c
gdb/coffread.c
gdb/cp-support.c
gdb/dwarf2read.c
gdb/eval.c
gdb/f-typeprint.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/gnu-v3-abi.c
gdb/go-lang.c
gdb/guile/scm-type.c
gdb/m2-typeprint.c
gdb/mdebugread.c
gdb/p-typeprint.c
gdb/python/py-type.c
gdb/rust-lang.c
gdb/stabsread.c
gdb/symmisc.c
gdb/target-descriptions.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/maint.exp
gdb/testsuite/gdb.cp/typeid.exp
gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp
gdb/testsuite/gdb.dwarf2/method-ptr.exp
gdb/testsuite/gdb.xml/tdesc-regs.exp
gdb/valarith.c
gdb/valops.c

index 918a467a43b98e76e8cd17ccb19339320bf86171..7caa3aff52b4d731d3d9fba309071f4e8c09035c 100644 (file)
@@ -1,3 +1,51 @@
+2018-06-01  Tom Tromey  <tom@tromey.com>
+
+       * valops.c (enum_constant_from_type, value_namespace_elt)
+       (value_maybe_namespace_elt): Update.
+       * valarith.c (find_size_for_pointer_math): Update.
+       * target-descriptions.c (make_gdb_type): Update.
+       * symmisc.c (print_symbol): Update.
+       * stabsread.c (define_symbol, read_type)
+       (complain_about_struct_wipeout, add_undefined_type)
+       (cleanup_undefined_types_1): Update.
+       * rust-lang.c (rust_tuple_type_p, rust_slice_type_p)
+       (rust_range_type_p, val_print_struct, rust_print_struct_def)
+       (rust_internal_print_type, rust_composite_type)
+       (rust_evaluate_funcall, rust_evaluate_subexp)
+       (rust_inclusive_range_type_p): Update.
+       * python/py-type.c (typy_get_tag): Update.
+       * p-typeprint.c (pascal_type_print_base): Update.
+       * mdebugread.c (parse_symbol, parse_type): Update.
+       * m2-typeprint.c (m2_long_set, m2_record_fields, m2_enum):
+       Update.
+       * guile/scm-type.c (gdbscm_type_tag): Update.
+       * go-lang.c (sixg_string_p): Update.
+       * gnu-v3-abi.c (build_gdb_vtable_type, build_std_type_info_type):
+       Update.
+       * gdbtypes.h (struct main_type) <tag_name>: Remove.
+       (TYPE_TAG_NAME): Remove.
+       * gdbtypes.c (type_name_no_tag): Simplify.
+       (check_typedef, check_types_equal, recursive_dump_type)
+       (copy_type_recursive, arch_composite_type): Update.
+       * f-typeprint.c (f_type_print_base): Update.  Print "Type" prefix
+       in summary mode when needed.
+       * eval.c (evaluate_funcall): Update.
+       * dwarf2read.c (fixup_go_packaging, read_structure_type)
+       (process_structure_scope, read_enumeration_type)
+       (read_namespace_type, read_module_type, determine_prefix): Update.
+       * cp-support.c (inspect_type): Update.
+       * coffread.c (process_coff_symbol, decode_base_type): Update.
+       * c-varobj.c (c_is_path_expr_parent): Update.
+       * c-typeprint.c (c_type_print_base_struct_union): Update.
+       (c_type_print_base_1): Update.  Print struct/class/union/enum in
+       summary when using C language.
+       * ax-gdb.c (gen_struct_ref, gen_namespace_elt)
+       (gen_maybe_namespace_elt): Update.
+       * ada-lang.c (ada_type_name): Simplify.
+       (empty_record, ada_template_to_fixed_record_type_1)
+       (template_to_static_fixed_type)
+       (to_record_with_fixed_variant_part, ada_check_typedef): Update.
+
 2018-06-01  Tom Tromey  <tom@tromey.com>
 
        * dwarf2read.c (dwarf2_compute_name): Pass CU's language to
index 64bddc267076abbb43259ef255ae6122a721c203..ceabf64c314305d5028d2d66804beb1207672adc 100644 (file)
@@ -8111,18 +8111,15 @@ ada_prefer_type (struct type *type0, struct type *type1)
   return 0;
 }
 
-/* The name of TYPE, which is either its TYPE_NAME, or, if that is
-   null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
+/* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
+   null.  */
 
 const char *
 ada_type_name (struct type *type)
 {
   if (type == NULL)
     return NULL;
-  else if (TYPE_NAME (type) != NULL)
-    return TYPE_NAME (type);
-  else
-    return TYPE_TAG_NAME (type);
+  return TYPE_NAME (type);
 }
 
 /* Search the list of "descriptive" types associated to TYPE for a type
@@ -8291,7 +8288,6 @@ empty_record (struct type *templ)
   TYPE_FIELDS (type) = NULL;
   INIT_CPLUS_SPECIFIC (type);
   TYPE_NAME (type) = "<empty>";
-  TYPE_TAG_NAME (type) = NULL;
   TYPE_LENGTH (type) = 0;
   return type;
 }
@@ -8350,7 +8346,6 @@ ada_template_to_fixed_record_type_1 (struct type *type,
     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
   TYPE_NAME (rtype) = ada_type_name (type);
-  TYPE_TAG_NAME (rtype) = NULL;
   TYPE_FIXED_INSTANCE (rtype) = 1;
 
   off = 0;
@@ -8627,7 +8622,6 @@ template_to_static_fixed_type (struct type *type0)
              memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
                      sizeof (struct field) * nfields);
              TYPE_NAME (type) = ada_type_name (type0);
-             TYPE_TAG_NAME (type) = NULL;
              TYPE_FIXED_INSTANCE (type) = 1;
              TYPE_LENGTH (type) = 0;
            }
@@ -8677,7 +8671,6 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
           sizeof (struct field) * nfields);
   TYPE_NAME (rtype) = ada_type_name (type);
-  TYPE_TAG_NAME (rtype) = NULL;
   TYPE_FIXED_INSTANCE (rtype) = 1;
   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
 
@@ -9288,11 +9281,11 @@ ada_check_typedef (struct type *type)
   type = check_typedef (type);
   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
       || !TYPE_STUB (type)
-      || TYPE_TAG_NAME (type) == NULL)
+      || TYPE_NAME (type) == NULL)
     return type;
   else
     {
-      const char *name = TYPE_TAG_NAME (type);
+      const char *name = TYPE_NAME (type);
       struct type *type1 = ada_find_any_type (name);
 
       if (type1 == NULL)
index 9a44d4b75013701b5eff0ecacf41a12436ba0ee5..2468061aadbd9f28c2d7eda715e568707f51fc23 100644 (file)
@@ -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_TAG_NAME (type));
+          field, TYPE_NAME (type));
 }
 
 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_TAG_NAME (curtype));
+          name, TYPE_NAME (curtype));
 
   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_TAG_NAME (curtype);
+  const char *namespace_name = TYPE_NAME (curtype);
   struct block_symbol sym;
 
   sym = cp_lookup_symbol_namespace (namespace_name, name,
index 97f7aaa7770200f149fbb51ea2611b916f9a5fdc..6141950afe5af458e0afd269852e1a50de3f6ae1 100644 (file)
@@ -1189,13 +1189,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_TAG_NAME (type) != NULL
-      && !startswith (TYPE_TAG_NAME (type), "{unnamed"))
+  if (TYPE_NAME (type) != NULL
+      && !startswith (TYPE_NAME (type), "{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_TAG_NAME (type), flags, stream);
+      print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
       if (show > 0)
        fputs_filtered (" ", stream);
     }
@@ -1204,10 +1204,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_TAG_NAME (type) == NULL)
+      if (TYPE_NAME (type) == NULL)
        fprintf_filtered (stream, "{...}");
     }
-  else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
+  else if (show > 0 || TYPE_NAME (type) == NULL)
     {
       struct type *basetype;
       int vptr_fieldno;
@@ -1620,15 +1620,33 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 
   /* 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 we have "typedef struct foo {. . .} bar;" do we want to print
-     it as "struct foo" or as "bar"?  Pick the latter, because C++
-     folk tend to expect things like "class5 *foo" rather than "struct
-     class5 *foo".  */
 
   if (show <= 0
       && TYPE_NAME (type) != NULL)
     {
       c_type_print_modifier (type, stream, 0, 1);
+
+      /* If we have "typedef struct foo {. . .} bar;" do we want to
+        print it as "struct foo" or as "bar"?  Pick the latter for
+        C++, because C++ folk tend to expect things like "class5
+        *foo" rather than "struct class5 *foo".  We rather
+        arbitrarily choose to make language_minimal work in a C-like
+        way. */
+      if (language == language_c || language == language_minimal)
+       {
+         if (TYPE_CODE (type) == TYPE_CODE_UNION)
+           fprintf_filtered (stream, "union ");
+         else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+           {
+             if (TYPE_DECLARED_CLASS (type))
+               fprintf_filtered (stream, "class ");
+             else
+               fprintf_filtered (stream, "struct ");
+           }
+         else if (TYPE_CODE (type) == TYPE_CODE_ENUM)
+           fprintf_filtered (stream, "enum ");
+       }
+
       print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
       return;
     }
@@ -1679,10 +1697,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_TAG_NAME (type) != NULL
-         && !startswith (TYPE_TAG_NAME (type), "{unnamed"))
+      if (TYPE_NAME (type) != NULL
+         && !startswith (TYPE_NAME (type), "{unnamed"))
        {
-         print_name_maybe_canonical (TYPE_TAG_NAME (type), flags, stream);
+         print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
          if (show > 0)
            fputs_filtered (" ", stream);
        }
@@ -1692,10 +1710,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_TAG_NAME (type) == NULL)
+         if (TYPE_NAME (type) == NULL)
            fprintf_filtered (stream, "{...}");
        }
-      else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
+      else if (show > 0 || TYPE_NAME (type) == NULL)
        {
          LONGEST lastval = 0;
 
@@ -1804,7 +1822,7 @@ c_type_print_base_1 (struct type *type, struct ui_file *stream,
 
     case TYPE_CODE_NAMESPACE:
       fputs_filtered ("namespace ", stream);
-      fputs_filtered (TYPE_TAG_NAME (type), stream);
+      fputs_filtered (TYPE_NAME (type), stream);
       break;
 
     default:
index 03656c0a81d4690ab15c96d8aac1de810361b4c4..7f12989979a824da561b89342448744754986a9d 100644 (file)
@@ -145,8 +145,7 @@ c_is_path_expr_parent (const struct varobj *var)
   /* Anonymous unions and structs are also not path_expr parents.  */
   if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
        || TYPE_CODE (type) == TYPE_CODE_UNION)
-      && TYPE_NAME (type) == NULL
-      && TYPE_TAG_NAME (type) == NULL)
+      && TYPE_NAME (type) == NULL)
     {
       const struct varobj *parent = var->parent;
 
index 5345fb79985a3cee948cce8cc0d225e48e62ffa9..bc266fb60e30bd378572be76e98ae0e12b418503 100644 (file)
@@ -1781,11 +1781,11 @@ 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_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
+         if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
            if (SYMBOL_LINKAGE_NAME (sym) != NULL
                && *SYMBOL_LINKAGE_NAME (sym) != '~'
                && *SYMBOL_LINKAGE_NAME (sym) != '.')
-             TYPE_TAG_NAME (SYMBOL_TYPE (sym)) =
+             TYPE_NAME (SYMBOL_TYPE (sym)) =
                concat (SYMBOL_LINKAGE_NAME (sym), (char *)NULL);
 
          add_symbol_to_list (sym, &file_symbols);
@@ -1950,10 +1950,6 @@ decode_base_type (struct coff_symbol *cs,
          type = coff_alloc_type (cs->c_symnum);
          TYPE_CODE (type) = TYPE_CODE_STRUCT;
          TYPE_NAME (type) = NULL;
-         /* This used to set the tag to "<opaque>".  But I think
-            setting it to NULL is right, and the printing code can
-            print it as "struct {...}".  */
-         TYPE_TAG_NAME (type) = NULL;
          INIT_CPLUS_SPECIFIC (type);
          TYPE_LENGTH (type) = 0;
          TYPE_FIELDS (type) = 0;
@@ -1974,10 +1970,6 @@ decode_base_type (struct coff_symbol *cs,
          /* Anonymous union type.  */
          type = coff_alloc_type (cs->c_symnum);
          TYPE_NAME (type) = NULL;
-         /* This used to set the tag to "<opaque>".  But I think
-            setting it to NULL is right, and the printing code can
-            print it as "union {...}".  */
-         TYPE_TAG_NAME (type) = NULL;
          INIT_CPLUS_SPECIFIC (type);
          TYPE_LENGTH (type) = 0;
          TYPE_FIELDS (type) = 0;
@@ -2000,10 +1992,6 @@ decode_base_type (struct coff_symbol *cs,
          type = coff_alloc_type (cs->c_symnum);
          TYPE_CODE (type) = TYPE_CODE_ENUM;
          TYPE_NAME (type) = NULL;
-         /* This used to set the tag to "<opaque>".  But I think
-            setting it to NULL is right, and the printing code can
-            print it as "enum {...}".  */
-         TYPE_TAG_NAME (type) = NULL;
          TYPE_LENGTH (type) = 0;
          TYPE_FIELDS (type) = 0;
          TYPE_NFIELDS (type) = 0;
index cec48019e552a75fa3fb1a0e89c5f82eaad2bfa6..3ce5f60b12c485fd3b3abc287c788c5d7b83ba94 100644 (file)
@@ -199,7 +199,7 @@ inspect_type (struct demangle_parse_info *info,
              && strcmp (TYPE_NAME (type), name) == 0)
            return 0;
 
-         is_anon = (TYPE_TAG_NAME (type) == NULL
+         is_anon = (TYPE_NAME (type) == NULL
                     && (TYPE_CODE (type) == TYPE_CODE_ENUM
                         || TYPE_CODE (type) == TYPE_CODE_STRUCT
                         || TYPE_CODE (type) == TYPE_CODE_UNION));
index 14cae6ef82685d29c5d997ebe876a2726baf97e2..b8e681b79a031b32811b46f3144679c06dc1e489 100644 (file)
@@ -9762,8 +9762,6 @@ fixup_go_packaging (struct dwarf2_cu *cu)
                                     saved_package_name);
       struct symbol *sym;
 
-      TYPE_TAG_NAME (type) = TYPE_NAME (type);
-
       sym = allocate_symbol (objfile);
       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
       SYMBOL_SET_NAMES (sym, saved_package_name,
@@ -15653,18 +15651,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_TAG_NAME (type) = full_name;
-         if (die->tag == DW_TAG_structure_type
-             || die->tag == DW_TAG_class_type)
-           TYPE_NAME (type) = TYPE_TAG_NAME (type);
+         TYPE_NAME (type) = full_name;
        }
       else
        {
          /* The name is already allocated along with this objfile, so
             we don't need to duplicate it for the type.  */
-         TYPE_TAG_NAME (type) = name;
-         if (die->tag == DW_TAG_class_type)
-           TYPE_NAME (type) = TYPE_TAG_NAME (type);
+         TYPE_NAME (type) = name;
        }
     }
 
@@ -15944,8 +15937,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_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
-                              "");
+                              TYPE_NAME (type) ? TYPE_NAME (type) : "");
                }
              else
                {
@@ -16135,7 +16127,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
   TYPE_CODE (type) = TYPE_CODE_ENUM;
   name = dwarf2_full_name (NULL, die, cu);
   if (name != NULL)
-    TYPE_TAG_NAME (type) = name;
+    TYPE_NAME (type) = name;
 
   attr = dwarf2_attr (die, DW_AT_type, cu);
   if (attr != NULL)
@@ -16686,7 +16678,6 @@ read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
 
   /* Create the type.  */
   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
-  TYPE_TAG_NAME (type) = TYPE_NAME (type);
 
   return set_die_type (die, type, cu);
 }
@@ -16751,9 +16742,6 @@ read_module_type (struct die_info *die, struct dwarf2_cu *cu)
                sect_offset_str (die->sect_off));
   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
 
-  /* determine_prefix uses TYPE_TAG_NAME.  */
-  TYPE_TAG_NAME (type) = TYPE_NAME (type);
-
   return set_die_type (die, type, cu);
 }
 
@@ -22183,18 +22171,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_TAG_NAME (parent_type), "::") == 0)
+           && strcmp (TYPE_NAME (parent_type), "::") == 0)
          return "";
        /* We give a name to even anonymous namespaces.  */
-       return TYPE_TAG_NAME (parent_type);
+       return TYPE_NAME (parent_type);
       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_TAG_NAME (parent_type) != NULL)
-         return TYPE_TAG_NAME (parent_type);
+       if (TYPE_NAME (parent_type) != NULL)
+         return TYPE_NAME (parent_type);
        else
          /* An anonymous structure is only allowed non-static data
             members; no typedefs, no member functions, et cetera.
@@ -22219,8 +22207,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_TAG_NAME (parent_type) != NULL)
-             return TYPE_TAG_NAME (parent_type);
+           if (TYPE_NAME (parent_type) != NULL)
+             return TYPE_NAME (parent_type);
            return "";
          }
        /* Fall through.  */
index 5bd6e2cbfea489c6baa775c84378c51610323c81..0fb59e82ed148f70e43f7f77086e293195021f71 100644 (file)
@@ -990,13 +990,13 @@ evaluate_funcall (type *expect_type, expression *exp, int *pos,
       function_name = NULL;
       if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
        {
-         function = cp_lookup_symbol_namespace (TYPE_TAG_NAME (type),
+         function = cp_lookup_symbol_namespace (TYPE_NAME (type),
                                                 name,
                                                 get_selected_block (0),
                                                 VAR_DOMAIN).symbol;
          if (function == NULL)
            error (_("No symbol \"%s\" in namespace \"%s\"."),
-                  name, TYPE_TAG_NAME (type));
+                  name, TYPE_NAME (type));
 
          tem = 1;
          /* arg2 is left as NULL on purpose.  */
index f14f1811f47f0784078cc713f2376cb5ad3c5d50..3f13c111ac560677a647cc1f984d07043ee28b85 100644 (file)
@@ -290,7 +290,12 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
 
   if ((show <= 0) && (TYPE_NAME (type) != NULL))
     {
-      fprintfi_filtered (level, stream, "%s", TYPE_NAME (type));
+      const char *prefix = "";
+      if (TYPE_CODE (type) == TYPE_CODE_UNION)
+       prefix = "Type, C_Union :: ";
+      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+       prefix = "Type ";
+      fprintfi_filtered (level, stream, "%s%s", prefix, TYPE_NAME (type));
       return;
     }
 
@@ -370,7 +375,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_TAG_NAME (type), stream);
+      fputs_filtered (TYPE_NAME (type), stream);
       /* According to the definition,
          we only print structure elements in case show > 0.  */
       if (show > 0)
@@ -387,12 +392,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_TAG_NAME (type), stream);
+         fputs_filtered (TYPE_NAME (type), stream);
        }
       break;
 
     case TYPE_CODE_MODULE:
-      fprintfi_filtered (level, stream, "module %s", TYPE_TAG_NAME (type));
+      fprintfi_filtered (level, stream, "module %s", TYPE_NAME (type));
       break;
 
     default_case:
index 3d75c210d0bbb1066f8e44bc6a2e22201054f3d6..ecf70d7b4432bb89da2b1ce1430b88b88554d650 100644 (file)
@@ -1469,12 +1469,6 @@ smash_to_method_type (struct type *type, struct type *self_type,
 const char *
 type_name_no_tag (const struct type *type)
 {
-  if (TYPE_TAG_NAME (type) != NULL)
-    return TYPE_TAG_NAME (type);
-
-  /* Is there code which expects this to return the name if there is
-     no tag name?  My guess is that this is mainly used for C++ in
-     cases where the two will always be the same.  */
   return TYPE_NAME (type);
 }
 
@@ -2445,10 +2439,8 @@ check_typedef (struct type *type)
            return make_qualified_type (type, instance_flags, NULL);
 
          name = type_name_no_tag (type);
-         /* FIXME: shouldn't we separately check the TYPE_NAME and
-            the TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or
-            VAR_DOMAIN as appropriate?  (this code was written before
-            TYPE_NAME and TYPE_TAG_NAME were separate).  */
+         /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or
+            VAR_DOMAIN as appropriate?  */
          if (name == NULL)
            {
              stub_noname_complaint ();
@@ -2534,10 +2526,8 @@ check_typedef (struct type *type)
   else if (TYPE_STUB (type) && !currently_reading_symtab)
     {
       const char *name = type_name_no_tag (type);
-      /* FIXME: shouldn't we separately check the TYPE_NAME and the
-         TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or VAR_DOMAIN
-         as appropriate?  (this code was written before TYPE_NAME and
-         TYPE_TAG_NAME were separate).  */
+      /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or VAR_DOMAIN
+         as appropriate?  */
       struct symbol *sym;
 
       if (name == NULL)
@@ -3669,8 +3659,7 @@ check_types_equal (struct type *type1, struct type *type2,
       || TYPE_NFIELDS (type1) != TYPE_NFIELDS (type2))
     return false;
 
-  if (!compare_maybe_null_strings (TYPE_TAG_NAME (type1),
-                                  TYPE_TAG_NAME (type2)))
+  if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
     return false;
   if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
     return false;
@@ -4530,10 +4519,6 @@ recursive_dump_type (struct type *type, int spaces)
                    TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
   gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
   printf_filtered (")\n");
-  printfi_filtered (spaces, "tagname '%s' (",
-                   TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : "<NULL>");
-  gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
-  printf_filtered (")\n");
   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
   switch (TYPE_CODE (type))
     {
@@ -4917,8 +4902,6 @@ copy_type_recursive (struct objfile *objfile,
 
   if (TYPE_NAME (type))
     TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
-  if (TYPE_TAG_NAME (type))
-    TYPE_TAG_NAME (new_type) = xstrdup (TYPE_TAG_NAME (type));
 
   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
@@ -5256,7 +5239,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_TAG_NAME (t) = name;
+  TYPE_NAME (t) = name;
   INIT_CPLUS_SPECIFIC (t);
   return t;
 }
index 2a1ed609d1810fcdd044ae0f00437256411f732f..1399b8efc13557cd2347af349532ac2182508b7e 100644 (file)
@@ -721,26 +721,12 @@ struct main_type
 
   /* * Name of this type, or NULL if none.
 
-     This is used for printing only, except by poorly designed C++
-     code.  For looking up a name, look for a symbol in the
-     VAR_DOMAIN.  This is generally allocated in the objfile's
-     obstack.  However coffread.c uses malloc.  */
+     This is used for printing only.  For looking up a name, look for
+     a symbol in the VAR_DOMAIN.  This is generally allocated in the
+     objfile's obstack.  However coffread.c uses malloc.  */
 
   const char *name;
 
-  /* * Tag name for this type, or NULL if none.  This means that the
-     name of the type consists of a keyword followed by the tag name.
-     Which keyword is determined by the type code ("struct" for
-     TYPE_CODE_STRUCT, etc.).  As far as I know C/C++ are the only
-     languages with this feature.
-
-     This is used for printing only, except by poorly designed C++ code.
-     For looking up a name, look for a symbol in the STRUCT_DOMAIN.
-     One more legitimate use is that if TYPE_STUB is set, this is
-     the name to use to look for definitions in other files.  */
-
-  const char *tag_name;
-
   /* * Every type is now associated with a particular objfile, and the
      type is allocated on the objfile_obstack for that objfile.  One
      problem however, is that there are times when gdb allocates new
@@ -1293,7 +1279,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) TYPE_MAIN_TYPE(thistype)->name
-#define TYPE_TAG_NAME(type) TYPE_MAIN_TYPE(type)->tag_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
index ddbec1389138e2ab64399e1e4d11b10593741ae8..8fe7253bd067931011413861bf385841c2709475 100644 (file)
@@ -164,7 +164,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_TAG_NAME (t) = "gdb_gnu_v3_abi_vtable";
+  TYPE_NAME (t) = "gdb_gnu_v3_abi_vtable";
   INIT_CPLUS_SPECIFIC (t);
 
   return make_type_with_address_space (t, TYPE_INSTANCE_FLAG_CODE_SPACE);
@@ -1028,7 +1028,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_TAG_NAME (t) = "gdb_gnu_v3_type_info";
+  TYPE_NAME (t) = "gdb_gnu_v3_type_info";
   INIT_CPLUS_SPECIFIC (t);
 
   return t;
index e9cba7713c05a898a0dd4f4fee20724e54fef122..60ab2f3dc3d57b4f83af02e17e7ffc769ce5e1e4 100644 (file)
@@ -106,8 +106,8 @@ static int
 sixg_string_p (struct type *type)
 {
   if (TYPE_NFIELDS (type) == 2
-      && TYPE_TAG_NAME (type) != NULL
-      && strcmp (TYPE_TAG_NAME (type), "string") == 0)
+      && TYPE_NAME (type) != NULL
+      && strcmp (TYPE_NAME (type), "string") == 0)
     return 1;
 
   return 0;
index f2e7be3e4501e08b32ad15d131589d562c48c6ec..cc997563dab29a91c344b08463304e54d9be95f2 100644 (file)
@@ -576,10 +576,16 @@ gdbscm_type_tag (SCM self)
   type_smob *t_smob
     = tyscm_get_type_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
   struct type *type = t_smob->type;
+  const char *tagname = nullptr;
 
-  if (!TYPE_TAG_NAME (type))
+  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+      || TYPE_CODE (type) == TYPE_CODE_UNION
+      || TYPE_CODE (type) == TYPE_CODE_ENUM)
+    tagname = TYPE_NAME (type);
+
+  if (tagname == nullptr)
     return SCM_BOOL_F;
-  return gdbscm_scm_from_c_string (TYPE_TAG_NAME (type));
+  return gdbscm_scm_from_c_string (tagname);
 }
 
 /* (type-name <gdb:type>) -> string
index 27e94292112e4ef0adf5c487feda7a5f7878bcd5..7279ab5b54bcfae7b7521c5cf3a3ac559ed9702c 100644 (file)
@@ -439,22 +439,14 @@ m2_long_set (struct type *type, struct ui_file *stream, int show, int level,
 
   if (m2_is_long_set (type))
     {
-      if (TYPE_TAG_NAME (type) != NULL)
-       {
-         fputs_filtered (TYPE_TAG_NAME (type), stream);
-         if (show == 0)
-           return 1;
-       }
-      else if (TYPE_NAME (type) != NULL)
+      if (TYPE_NAME (type) != NULL)
        {
          fputs_filtered (TYPE_NAME (type), stream);
          if (show == 0)
            return 1;
+         fputs_filtered (" = ", stream);
        }
 
-      if (TYPE_TAG_NAME (type) != NULL || TYPE_NAME (type) != NULL)
-       fputs_filtered (" = ", stream);
-
       if (get_long_set_bounds (type, &low, &high))
        {
          fprintf_filtered(stream, "SET OF ");
@@ -537,11 +529,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_TAG_NAME (type) != NULL)
+  if (TYPE_NAME (type) != NULL)
     {
-      if (!startswith (TYPE_TAG_NAME (type), "$$"))
+      if (!startswith (TYPE_NAME (type), "$$"))
        {
-         fputs_filtered (TYPE_TAG_NAME (type), stream);
+         fputs_filtered (TYPE_NAME (type), stream);
          if (show > 0)
            fprintf_filtered (stream, " = ");
        }
@@ -601,10 +593,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_TAG_NAME (type) == NULL)
+      if (TYPE_NAME (type) == NULL)
        fprintf_filtered (stream, "(...)");
     }
-  else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
+  else if (show > 0 || TYPE_NAME (type) == NULL)
     {
       fprintf_filtered (stream, "(");
       len = TYPE_NFIELDS (type);
index eeefb665cd2a9dfbb2fe2a0f0d569e06b16fe688..98f10b465e580e98f8e10a0d7dae0c4d9ed6d5f1 100644 (file)
@@ -1024,10 +1024,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_TAG_NAME (t) = NULL;
+         TYPE_NAME (t) = NULL;
        else
-         TYPE_TAG_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
-                                       name, (char *) NULL);
+         TYPE_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
+                                   name, (char *) NULL);
 
        TYPE_CODE (t) = type_code;
        TYPE_LENGTH (t) = sh->value;
@@ -1687,10 +1687,10 @@ 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_TAG_NAME (tp) = NULL;
-         else if (TYPE_TAG_NAME (tp) == NULL
-                  || strcmp (TYPE_TAG_NAME (tp), name) != 0)
-           TYPE_TAG_NAME (tp)
+           TYPE_NAME (tp) = NULL;
+         else if (TYPE_NAME (tp) == NULL
+                  || strcmp (TYPE_NAME (tp), name) != 0)
+           TYPE_NAME (tp)
              = ((const char *)
                 obstack_copy0 (&mdebugread_objfile->objfile_obstack,
                                name, strlen (name)));
index e35e0fbd80bee4e49376c19a3bf67bf9317ca94f..f82a2bc981dbe41bbd4c11dfb51c5cb7e81a600b 100644 (file)
@@ -522,9 +522,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
          only after args !!  */
       break;
     case TYPE_CODE_STRUCT:
-      if (TYPE_TAG_NAME (type) != NULL)
+      if (TYPE_NAME (type) != NULL)
        {
-         fputs_filtered (TYPE_TAG_NAME (type), stream);
+         fputs_filtered (TYPE_NAME (type), stream);
          fputs_filtered (" = ", stream);
        }
       if (HAVE_CPLUS_STRUCT (type))
@@ -538,9 +538,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       goto struct_union;
 
     case TYPE_CODE_UNION:
-      if (TYPE_TAG_NAME (type) != NULL)
+      if (TYPE_NAME (type) != NULL)
        {
-         fputs_filtered (TYPE_TAG_NAME (type), stream);
+         fputs_filtered (TYPE_NAME (type), stream);
          fputs_filtered (" = ", stream);
        }
       fprintf_filtered (stream, "case <?> of ");
@@ -550,10 +550,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_TAG_NAME (type) == NULL)
+         if (TYPE_NAME (type) == NULL)
            fprintf_filtered (stream, "{...}");
        }
-      else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
+      else if (show > 0 || TYPE_NAME (type) == NULL)
        {
          pascal_type_print_derivation_info (stream, type);
 
@@ -740,9 +740,9 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
       break;
 
     case TYPE_CODE_ENUM:
-      if (TYPE_TAG_NAME (type) != NULL)
+      if (TYPE_NAME (type) != NULL)
        {
-         fputs_filtered (TYPE_TAG_NAME (type), stream);
+         fputs_filtered (TYPE_NAME (type), stream);
          if (show > 0)
            fputs_filtered (" ", stream);
        }
@@ -753,10 +753,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_TAG_NAME (type) == NULL)
+         if (TYPE_NAME (type) == NULL)
            fprintf_filtered (stream, "(...)");
        }
-      else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
+      else if (show > 0 || TYPE_NAME (type) == NULL)
        {
          fprintf_filtered (stream, "(");
          len = TYPE_NFIELDS (type);
index 80055b05e05c72f9f9c10994984f5d1529854284..dd8c0aa9dcb471a1a03ebf4568f725a66e153b42 100644 (file)
@@ -416,10 +416,16 @@ static PyObject *
 typy_get_tag (PyObject *self, void *closure)
 {
   struct type *type = ((type_object *) self)->type;
+  const char *tagname = nullptr;
 
-  if (!TYPE_TAG_NAME (type))
+  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+      || TYPE_CODE (type) == TYPE_CODE_UNION
+      || TYPE_CODE (type) == TYPE_CODE_ENUM)
+    tagname = TYPE_NAME (type);
+
+  if (tagname == nullptr)
     Py_RETURN_NONE;
-  return PyString_FromString (TYPE_TAG_NAME (type));
+  return PyString_FromString (tagname);
 }
 
 /* Return the type, stripped of typedefs. */
index ed0394592fac5e730f65e16ad000d417504368ba..167f35398eb4687c782f74e6b680532a1f051d22 100644 (file)
@@ -95,8 +95,8 @@ rust_tuple_type_p (struct type *type)
      nothing else in the debuginfo to distinguish a tuple from a
      struct.  */
   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-         && TYPE_TAG_NAME (type) != NULL
-         && TYPE_TAG_NAME (type)[0] == '(');
+         && TYPE_NAME (type) != NULL
+         && TYPE_NAME (type)[0] == '(');
 }
 
 /* Return true if all non-static fields of a structlike type are in a
@@ -143,9 +143,9 @@ static bool
 rust_slice_type_p (struct type *type)
 {
   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-         && TYPE_TAG_NAME (type) != NULL
-         && (strncmp (TYPE_TAG_NAME (type), "&[", 2) == 0
-             || strcmp (TYPE_TAG_NAME (type), "&str") == 0));
+         && TYPE_NAME (type) != NULL
+         && (strncmp (TYPE_NAME (type), "&[", 2) == 0
+             || strcmp (TYPE_NAME (type), "&str") == 0));
 }
 
 /* Return true if TYPE is a range type, otherwise false.  */
@@ -157,8 +157,8 @@ rust_range_type_p (struct type *type)
 
   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
       || TYPE_NFIELDS (type) > 2
-      || TYPE_TAG_NAME (type) == NULL
-      || strstr (TYPE_TAG_NAME (type), "::Range") == NULL)
+      || TYPE_NAME (type) == NULL
+      || strstr (TYPE_NAME (type), "::Range") == NULL)
     return false;
 
   if (TYPE_NFIELDS (type) == 0)
@@ -187,8 +187,8 @@ rust_range_type_p (struct type *type)
 static bool
 rust_inclusive_range_type_p (struct type *type)
 {
-  return (strstr (TYPE_TAG_NAME (type), "::RangeInclusive") != NULL
-         || strstr (TYPE_TAG_NAME (type), "::RangeToInclusive") != NULL);
+  return (strstr (TYPE_NAME (type), "::RangeInclusive") != NULL
+         || strstr (TYPE_NAME (type), "::RangeToInclusive") != NULL);
 }
 
 /* Return true if TYPE seems to be the type "u8", otherwise false.  */
@@ -353,13 +353,13 @@ val_print_struct (struct type *type, int embedded_offset,
 
   if (!is_tuple)
     {
-      if (TYPE_TAG_NAME (type) != NULL)
-        fprintf_filtered (stream, "%s", TYPE_TAG_NAME (type));
+      if (TYPE_NAME (type) != NULL)
+        fprintf_filtered (stream, "%s", TYPE_NAME (type));
 
       if (TYPE_NFIELDS (type) == 0)
         return;
 
-      if (TYPE_TAG_NAME (type) != NULL)
+      if (TYPE_NAME (type) != NULL)
         fputs_filtered (" ", stream);
     }
 
@@ -628,7 +628,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_TAG_NAME (type), stream);
+      fputs_filtered (TYPE_NAME (type), stream);
       return;
     }
 
@@ -638,7 +638,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_TAG_NAME (type);
+  const char *tagname = TYPE_NAME (type);
   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);
@@ -819,11 +819,11 @@ rust_internal_print_type (struct type *type, const char *varstring,
        int i, len = 0;
 
        fputs_filtered ("enum ", stream);
-       if (TYPE_TAG_NAME (type) != NULL)
+       if (TYPE_NAME (type) != NULL)
          {
-           fputs_filtered (TYPE_TAG_NAME (type), stream);
+           fputs_filtered (TYPE_NAME (type), stream);
            fputs_filtered (" ", stream);
-           len = strlen (TYPE_TAG_NAME (type));
+           len = strlen (TYPE_NAME (type));
          }
        fputs_filtered ("{\n", stream);
 
@@ -834,7 +834,7 @@ rust_internal_print_type (struct type *type, const char *varstring,
            QUIT;
 
            if (len > 0
-               && strncmp (name, TYPE_TAG_NAME (type), len) == 0
+               && strncmp (name, TYPE_NAME (type), len) == 0
                && name[len] == ':'
                && name[len + 1] == ':')
              name += len + 2;
@@ -882,7 +882,6 @@ rust_composite_type (struct type *original,
 
   TYPE_CODE (result) = TYPE_CODE_STRUCT;
   TYPE_NAME (result) = name;
-  TYPE_TAG_NAME (result) = name;
 
   TYPE_NFIELDS (result) = nfields;
   TYPE_FIELDS (result)
@@ -1060,10 +1059,10 @@ rust_evaluate_funcall (struct expression *exp, int *pos, enum noside noside)
        && TYPE_CODE (type) != TYPE_CODE_ENUM)
       || rust_tuple_type_p (type))
     error (_("Method calls only supported on struct or enum types"));
-  if (TYPE_TAG_NAME (type) == NULL)
+  if (TYPE_NAME (type) == NULL)
     error (_("Method call on nameless type"));
 
-  std::string name = std::string (TYPE_TAG_NAME (type)) + "::" + method;
+  std::string name = std::string (TYPE_NAME (type)) + "::" + method;
 
   block = get_selected_block (0);
   sym = lookup_symbol (name.c_str (), block, VAR_DOMAIN, NULL);
@@ -1583,13 +1582,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_TAG_NAME (outer_type),
-                       rust_last_path_segment (TYPE_TAG_NAME (type)),
+                       field_number, TYPE_NAME (outer_type),
+                       rust_last_path_segment (TYPE_NAME (type)),
                        nfields);
                else
                  error(_("Cannot access field %d of %s, "
                          "there are only %d fields"),
-                       field_number, TYPE_TAG_NAME (type), nfields);
+                       field_number, TYPE_NAME (type), nfields);
              }
 
            /* Tuples are tuple structs too.  */
@@ -1597,13 +1596,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_TAG_NAME (outer_type),
-                       rust_last_path_segment (TYPE_TAG_NAME (type)));
+                       TYPE_NAME (outer_type),
+                       rust_last_path_segment (TYPE_NAME (type)));
                else
                  error(_("Attempting to access anonymous field %d "
                          "of %s, which is not a tuple, tuple struct, or "
                          "tuple-like variant"),
-                     field_number, TYPE_TAG_NAME (type));
+                     field_number, TYPE_NAME (type));
              }
 
            result = value_primitive_field (lhs, 0, field_number, type);
@@ -1645,7 +1644,7 @@ 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 foo of tuple "
                         "variant %s::%s, which has only anonymous fields"),
-                      TYPE_TAG_NAME (outer_type),
+                      TYPE_NAME (outer_type),
                       rust_last_path_segment (TYPE_NAME (type)));
 
            TRY
@@ -1656,7 +1655,7 @@ tuple structs, and tuple-like enum variants"));
            CATCH (except, RETURN_MASK_ERROR)
              {
                error (_("Could not find field %s of struct variant %s::%s"),
-                      field_name, TYPE_TAG_NAME (outer_type),
+                      field_name, TYPE_NAME (outer_type),
                       rust_last_path_segment (TYPE_NAME (type)));
              }
            END_CATCH
index 366b07d4a26ed486f109f006c5655a30c96e37a8..68feabdebc4c77130a0e3fb82157d1ea1262b6ed 100644 (file)
@@ -1343,8 +1343,8 @@ 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_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
-       TYPE_TAG_NAME (SYMBOL_TYPE (sym))
+      if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+       TYPE_NAME (SYMBOL_TYPE (sym))
          = obconcat (&objfile->objfile_obstack,
                      SYMBOL_LINKAGE_NAME (sym),
                      (char *) NULL);
@@ -1699,7 +1699,7 @@ again:
           type.  */
        type = dbx_alloc_type (typenums, objfile);
        TYPE_CODE (type) = code;
-       TYPE_TAG_NAME (type) = type_name;
+       TYPE_NAME (type) = type_name;
        INIT_CPLUS_SPECIFIC (type);
        TYPE_STUB (type) = 1;
 
@@ -1764,7 +1764,6 @@ again:
                copies of a type otherwise.  */
            replace_type (type, xtype);
            TYPE_NAME (type) = NULL;
-           TYPE_TAG_NAME (type) = NULL;
          }
        else
          {
@@ -3413,9 +3412,9 @@ complain_about_struct_wipeout (struct type *type)
   const char *name = "";
   const char *kind = "";
 
-  if (TYPE_TAG_NAME (type))
+  if (TYPE_NAME (type))
     {
-      name = TYPE_TAG_NAME (type);
+      name = TYPE_NAME (type);
       switch (TYPE_CODE (type))
         {
         case TYPE_CODE_STRUCT: kind = "struct "; break;
@@ -3424,11 +3423,6 @@ complain_about_struct_wipeout (struct type *type)
         default: kind = "";
         }
     }
-  else if (TYPE_NAME (type))
-    {
-      name = TYPE_NAME (type);
-      kind = "";
-    }
   else
     {
       name = "<unknown>";
@@ -4458,7 +4452,7 @@ add_undefined_type_1 (struct type *type)
 static void
 add_undefined_type (struct type *type, int typenums[2])
 {
-  if (TYPE_TAG_NAME (type) == NULL)
+  if (TYPE_NAME (type) == NULL)
     add_undefined_type_noname (type, typenums);
   else
     add_undefined_type_1 (type);
@@ -4543,7 +4537,7 @@ cleanup_undefined_types_1 (void)
                struct pending *ppt;
                int i;
                /* Name of the type, without "struct" or "union".  */
-               const char *type_name = TYPE_TAG_NAME (*type);
+               const char *type_name = TYPE_NAME (*type);
 
                if (type_name == NULL)
                  {
index 91ddc578a8d6df7dceca2563dc63b809fa6ba828..d30a35481ebd4f2e28d2f76af717cffafb2fac82 100644 (file)
@@ -541,7 +541,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 
   if (SYMBOL_DOMAIN (symbol) == STRUCT_DOMAIN)
     {
-      if (TYPE_TAG_NAME (SYMBOL_TYPE (symbol)))
+      if (TYPE_NAME (SYMBOL_TYPE (symbol)))
        {
          LA_PRINT_TYPE (SYMBOL_TYPE (symbol), "", outfile, 1, depth,
                         &type_print_raw_options);
index 83a6f6cafc32690b75724d35332bd268df7c423f..d4db8251dfd9074d6f3ce82d28326359d7f939bd 100644 (file)
@@ -189,7 +189,6 @@ make_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *ttype)
     {
       m_type = arch_composite_type (m_gdbarch, NULL, TYPE_CODE_STRUCT);
       TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
-      TYPE_TAG_NAME (m_type) = TYPE_NAME (m_type);
 
       for (const tdesc_type_field &f : e->fields)
        {
index c303d808b1861a2335d19703d453edb5b0189de0..9fb10b5a23c3cff79c07b0842ce88c5f5d660433 100644 (file)
@@ -1,3 +1,12 @@
+2018-06-01  Tom Tromey  <tom@tromey.com>
+
+       * gdb.xml/tdesc-regs.exp (load_description): Update expected
+       results.
+       * gdb.dwarf2/method-ptr.exp: Set language to C++.
+       * gdb.dwarf2/member-ptr-forwardref.exp: Set language to C++.
+       * gdb.cp/typeid.exp (do_typeid_tests): Update type_re.
+       * gdb.base/maint.exp (maint_pass_if): Update.
+
 2018-05-31  Maciej W. Rozycki  <macro@mips.com>
 
        * gdb.base/endian.exp: New test.
index aefaeb01387eb5bc07641107cd5bdeb746823742..92086eec86204116b956664b1299c386d51cf206 100644 (file)
@@ -360,7 +360,7 @@ foreach { test_name command } $test_list {
 
 set msg "maint print type"
 gdb_test_multiple "maint print type argc" $msg {
-    -re "type node $hex\r\nname .int. \\($hex\\)\r\ntagname .<NULL>. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ntype_chain $hex\r\ninstance_flags $hex\r\nflags\r\nnfields 0 $hex\r\n$gdb_prompt $" {
+    -re "type node $hex\r\nname .int. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ntype_chain $hex\r\ninstance_flags $hex\r\nflags\r\nnfields 0 $hex\r\n$gdb_prompt $" {
         pass $msg
     }
 }
index 4378dcbb5929c1bf895deefe8f40408ab0887952..1731b78b9df8261561ed9d5f5f794844dc8df3b4 100644 (file)
@@ -27,7 +27,7 @@ proc do_typeid_tests {started} {
     global hex
 
     # We might see the standard type or gdb's internal type.
-    set type_re "(std::type_info|struct gdb_gnu_v3_type_info)"
+    set type_re "(std::type_info|gdb_gnu_v3_type_info)"
 
 
     foreach simple_var {i cp ccp ca b} {
index 41eff9237cf55f2ba7ccca1ad5ba7e7b803f0931..31707bbd0c59451f18d113b871b8a27593d35242 100644 (file)
@@ -38,4 +38,5 @@ gdb_test "show cp-abi" {The currently selected C\+\+ ABI is "gnu-v3".*}
 
 gdb_load ${binfile}
 
+gdb_test_no_output "set language c++"
 gdb_test "ptype c" "type = struct C {\[\r\n \t\]*private:\[\r\n \t\]*int \\(C::\\*fp\\)\\(C \\*( const)?\\);\[\r\n \t\]*}"
index 5a4f05350e3e7f7c0db86f0553cdbe6b46dba1b5..7fe755cb7df8c82ccf471790f14accec194b87b0 100644 (file)
@@ -82,5 +82,6 @@ if { [prepare_for_testing "failed to prepare" ${testfile} \
     return -1
 }
 
+gdb_test_no_output "set language c++"
 gdb_test "ptype the_typedef" \
     "type = int \\(S::\\*\\)\\(S \\* const, float\\)"
index bb7b9be16c4748060e7f1d0ba621c88ed99a733a..94d4007a89ebb3a315eba02ef0d5f5fe55625196 100644 (file)
@@ -179,7 +179,7 @@ gdb_test "ptype \$extrareg" "type = (int|long|long long)"
 gdb_test "ptype \$uintreg" "type = uint32_t"
 gdb_test "ptype \$vecreg" "type = int8_t __attribute__ \\(\\(vector_size\\(4\\)\\)\\)"
 gdb_test "ptype \$unionreg" \
-    "type = union {\r\n *v4int8 v4;\r\n *v2int16 v2;\r\n}"
+    "type = union vecint {\r\n *v4int8 v4;\r\n *v2int16 v2;\r\n}"
 gdb_test "ptype \$unionreg.v4" "type = int8_t __attribute__ \\(\\(vector_size\\(4\\)\\)\\)"
 gdb_test "ptype \$structreg" \
     "type = struct struct1 {\r\n *v4int8 v4;\r\n *v2int16 v2;\r\n}"
@@ -189,7 +189,7 @@ gdb_test "ptype \$bitfields" \
 gdb_test "ptype \$flags" \
     "type = flag flags {\r\n *bool X @0;\r\n *uint32_t Y @2;\r\n}"
 gdb_test "ptype \$mixed_flags" \
-    "type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1-3;\r\n *bool C @4;\r\n *uint32_t D @5;\r\n *uint32_t @6-7;\r\n *enum {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
+    "type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1-3;\r\n *bool C @4;\r\n *uint32_t D @5;\r\n *uint32_t @6-7;\r\n *enum Z_values {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
 # Reggroups should have at least general and the extra foo group
 gdb_test "maintenance print reggroups" \
     " Group\[ \t\]+Type\[ \t\]+\r\n.* general\[ \t\]+user\[ \t\]+\r\n.* foo\[ \t\]+user\[ \t\]+"
index 58e3a09c3785e3cbab78903ef43871b90f6893a4..d2dd5900647473ece117d4ac9102a36363222ebf 100644 (file)
@@ -60,8 +60,6 @@ find_size_for_pointer_math (struct type *ptr_type)
          const char *name;
          
          name = TYPE_NAME (ptr_target);
-         if (name == NULL)
-           name = TYPE_TAG_NAME (ptr_target);
          if (name == NULL)
            error (_("Cannot perform pointer math on incomplete types, "
                   "try casting to a known type, or void *."));
index 62a86c06a337fc46efb53e2baefc3c30f105a336..ed8019c62cae011a15cdd9f8085e616bc5f74bab 100644 (file)
@@ -3243,7 +3243,7 @@ enum_constant_from_type (struct type *type, const char *name)
     }
 
   error (_("no constant named \"%s\" in enum \"%s\""),
-        name, TYPE_TAG_NAME (type));
+        name, TYPE_NAME (type));
 }
 
 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
@@ -3581,7 +3581,7 @@ value_namespace_elt (const struct type *curtype,
 
   if (retval == NULL)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-          name, TYPE_TAG_NAME (curtype));
+          name, TYPE_NAME (curtype));
 
   return retval;
 }
@@ -3597,7 +3597,7 @@ value_maybe_namespace_elt (const struct type *curtype,
                           const char *name, int want_address,
                           enum noside noside)
 {
-  const char *namespace_name = TYPE_TAG_NAME (curtype);
+  const char *namespace_name = TYPE_NAME (curtype);
   struct block_symbol sym;
   struct value *result;