Fix "finish" with range types on ARM

On ARM (I tested big-endian but it may not matter), "finish" can
sometimes print the wrong result when the return type is a range type.
Range types should really be treated as their underlying type
(normally integer, but sometimes fixed-point).  This patch implements
this.

Approved-By: Luis Machado <luis.machado@arm.com>
This commit is contained in:
Tom Tromey
2023-09-20 07:50:58 -06:00
parent 8942e52e25
commit b4b9074dc0

View File

@@ -8915,6 +8915,9 @@ arm_extract_return_value (struct type *type, struct regcache *regs,
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
while (type->code () == TYPE_CODE_RANGE)
type = check_typedef (type->target_type ());
if (TYPE_CODE_FLT == type->code ())
{
switch (tdep->fp_model)