Fix regression in variant part handling
My series to change DWARF attribute handling to be type-safe introduced a regression in gdb.ada/variant.exp. handle_variant was using as_unsigned on an attribute with DW_FORM_sdata. This patch changes it to use constant_value instead. 2020-09-30 Tom Tromey <tromey@adacore.com> * dwarf2/read.c (handle_variant): Use constant_value.
This commit is contained in:
parent
77718e5b7d
commit
cae21f8ebf
2 changed files with 6 additions and 2 deletions
|
@ -16178,7 +16178,7 @@ handle_variant (struct die_info *die, struct type *type,
|
|||
/* In a variant we want to get the discriminant and also add a
|
||||
field for our sole member child. */
|
||||
struct attribute *discr = dwarf2_attr (die, DW_AT_discr_value, cu);
|
||||
if (discr == nullptr)
|
||||
if (discr == nullptr || !discr->form_is_constant ())
|
||||
{
|
||||
discr = dwarf2_attr (die, DW_AT_discr_list, cu);
|
||||
if (discr == nullptr || discr->as_block ()->size == 0)
|
||||
|
@ -16187,7 +16187,7 @@ handle_variant (struct die_info *die, struct type *type,
|
|||
variant.discr_list_data = discr->as_block ();
|
||||
}
|
||||
else
|
||||
variant.discriminant_value = discr->as_unsigned ();
|
||||
variant.discriminant_value = discr->constant_value (0);
|
||||
|
||||
for (die_info *variant_child = die->child;
|
||||
variant_child != NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue