Message ID | 20180412190756.16052-3-tom@tromey.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
> I think that TYPE_TAG_NAME is confusing and should probably be > removed. I am working on a patch to do this, but in the meantime this > seemed like a reasonable change to apply. I suspect this change would > be ok for C++ as well, but I do not know about D. I agree that TYPE_TAG_NAME is confusing, and I would welcome it being removed. > 2018-04-12 Tom Tromey <tom@tromey.com> > > * dwarf2read.c (read_structure_type): Set TYPE_NAME for rust > unions. The patch looks good to me, but I'd like to see if others have comments about C++. I'm trying to remember if C++ enums might have different rules compared to C enums, and I'm not remembering any... If there weren't any difference, and things were OK with C enums, one might think that we're OK for C++ enums as well... No way to test this either? -- Joel
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes: >> 2018-04-12 Tom Tromey <tom@tromey.com> >> >> * dwarf2read.c (read_structure_type): Set TYPE_NAME for rust >> unions. Joel> The patch looks good to me, but I'd like to see if others have comments Joel> about C++. I'm trying to remember if C++ enums might have different Joel> rules compared to C enums, and I'm not remembering any... If there Joel> weren't any difference, and things were OK with C enums, one might Joel> think that we're OK for C++ enums as well... Joel> No way to test this either? I am not sure. However, my TYPE_TAG_NAME deletion patch is ready now (I'll send it momentarily), so I think we can just drop this one, because that patch obsoletes it. Tom
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ceaa5f92ab..f2bb3d0af3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2018-04-12 Tom Tromey <tom@tromey.com> + * dwarf2read.c (read_structure_type): Set TYPE_NAME for rust + unions. + +2018-04-12 Tom Tromey <tom@tromey.com> + * dwarf2read.c (quirk_rust_enum): Conditionally drop the discriminant field. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 4207e4c531..e3f544a6a4 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -15631,7 +15631,9 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) TYPE_TAG_NAME (type) = full_name; if (die->tag == DW_TAG_structure_type - || die->tag == DW_TAG_class_type) + || die->tag == DW_TAG_class_type + || (cu->language == language_rust + && die->tag == DW_TAG_union_type)) TYPE_NAME (type) = TYPE_TAG_NAME (type); } else