diff options
author | Tom Tromey <tom@tromey.com> | 2018-04-17 13:51:24 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-06-01 10:19:55 -0600 |
commit | e86ca25fd6cc06488c9dda936cf83f0fcdf6b58b (patch) | |
tree | e7cd08ab978fa972959ac445c3799e9ccbf0ebc0 /gdb/ada-lang.c | |
parent | c1ec8cea7ff53eb76cb7c354b813c67fde755409 (diff) | |
download | binutils-gdb-e86ca25fd6cc06488c9dda936cf83f0fcdf6b58b.tar.gz |
Remove TYPE_TAG_NAME
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.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 64bddc26707..ceabf64c314 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -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) |