(ARM/fixed-point) wrong value shown by "finish" command:
authorJoel Brobecker <brobecker@adacore.com>
Wed, 2 May 2018 20:59:12 +0000 (13:59 -0700)
committerTom Tromey <tromey@adacore.com>
Thu, 2 Dec 2021 16:08:50 +0000 (09:08 -0700)
commita6617193990fd9b6762d735f742f2df542b859c7
tree0abe11c0d98e0279c3d8a8e635d40508e68bcc9c
parent28397ae781e0780259648991f981909c5a5045e7
(ARM/fixed-point) wrong value shown by "finish" command:

Consider the following Ada code:

   type FP1_Type is delta 0.1 range -1.0 .. +1.0; --  Ordinary
   FP1_Arg : FP1_Type := 0.0;

   function Call_FP1 (F : FP1_Type) return FP1_Type is
   begin
      FP1_Arg := F;
      return FP1_Arg;
   end Call_FP1;

After having stopped inside function Call_FP1 as follow:

    Breakpoint 1, pck.call_fp1 (f=1) at /[...]/pck.adb:5
    5             FP1_Arg := F;

Returning from that function call using "finish" should show
that the function return "1.0" (the same value as was passed
as an argument). However, this is not the case:

    (gdb) finish
    Run till exit from #0  pck.call_fp1 (f=1)
    [...]
    9          F1 := Call_FP1 (F1);
    Value returned is $1 = 0

This patch enhances the extraction of the return value to know about
fixed point types.
gdb/arm-tdep.c