Fix fixed-point regression with recent GCC
A recent version of GCC changed how fixed-point types are described.
For example, a denominator in one test case now looks like:
GNU_denominator (exprloc)
[ 0] implicit_value: 16 byte block: 00 00 b8 9d 0d 69 55 a0 01 00 00 00 00 00 00 00
... the difference being that this now uses exprloc and emits a
DW_OP_implicit_value for the 16-byte block. (DWARF 5 still uses
DW_FORM_data16.)
This change was made here:
https://gcc.gnu.org/pipermail/gcc-patches/2020-December/560897.html
This patch updates gdb to handle this situation.
Note that, before GCC 11, this test would not give the same answer.
Earlier versions of GCC fell back to GNAT encodings for this case.
gdb/ChangeLog
2021-01-25 Tom Tromey <tromey@adacore.com>
* dwarf2/read.c (get_mpz): New function.
(get_dwarf2_rational_constant): Use it.
gdb/testsuite/ChangeLog
2021-01-25 Tom Tromey <tromey@adacore.com>
* gdb.ada/fixed_points.exp: Add regression test.
* gdb.ada/fixed_points/fixed_points.adb (FP5_Var): New variable.
* gdb.ada/fixed_points/pck.adb (Delta5, FP5_Type): New.