Resolve dynamic type in ada_value_struct_elt
authorTom Tromey <tromey@adacore.com>
Wed, 4 Nov 2020 15:49:16 +0000 (08:49 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 4 Nov 2020 15:49:18 +0000 (08:49 -0700)
commit24aa1b028236fff1b1cf04e8cadcc2e7b4c72aab
tree869a2e61f57a091c293e643c9b064fd406deae53
parentc9a28cbed612a32efca1167d3b4641278a85059e
Resolve dynamic type in ada_value_struct_elt

An internal AdaCore test case showed that gdb mishandled a case of
assigning to an array element in a packed array inside a variant
record.  This problem can only be seen with -fgnat-encodings=minimal,
which isn't yet widely used.  This patch fixes the bug, and also
updates an existing test to check this case.

gdb/ChangeLog
2020-11-04  Tom Tromey  <tromey@adacore.com>

* ada-lang.c (ada_value_struct_elt): Resolve dynamic type.

gdb/testsuite/ChangeLog
2020-11-04  Tom Tromey  <tromey@adacore.com>

* gdb.ada/set_pckd_arr_elt.exp: Also test
-fgnat-encodings=minimal.  Add tests.
* gdb.ada/set_pckd_arr_elt/foo.adb (Foo): Add VA variable.
Call Update_Small a second time.
* gdb.ada/set_pckd_arr_elt/pck.adb (New_Variant): New function.
* gdb.ada/set_pckd_arr_elt/pck.ads (Buffer, Variant)
(Variant_Access): New types.
(New_Variant): Declare.
gdb/ChangeLog
gdb/ada-lang.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/set_pckd_arr_elt.exp
gdb/testsuite/gdb.ada/set_pckd_arr_elt/foo.adb
gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.adb
gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.ads