Correctly compute length of DW_TAG_variant_part union
authorTom Tromey <tom@tromey.com>
Sat, 30 Nov 2019 17:05:23 +0000 (10:05 -0700)
committerTom Tromey <tom@tromey.com>
Sun, 1 Dec 2019 03:47:44 +0000 (20:47 -0700)
commit489dbda6a8d6d54bbc349c7048553fc5f791cb41
treef2e6fa591fdec540aa51bf967003548d033be018
parent425124817eef869ad3595a03aaa999cbb1504bb6
Correctly compute length of DW_TAG_variant_part union

Currently, gdb internally transforms DW_TAG_variant_part into a union
(with some special attbributes).  When doing so, it computes the
length of this union from the length of the fields.  However, this
computation didn't include the offset of these fields, resulting in
the length being too short.

This is not a problem given the way the code currently works.
However, I have a patch series to switch gdb to value-based printing,
where this does have an impact.

Tested on x86-64 Fedora 28; and, considering that this only affects
Rust, I am checking it in.

gdb/ChangeLog
2019-11-30  Tom Tromey  <tom@tromey.com>

* dwarf2read.c (dwarf2_add_field): Include field offset when
computing variant part length.

Change-Id: I25d84fc237eb3c1e7f11f6eaf35ffe198efde6cc
gdb/ChangeLog
gdb/dwarf2read.c