[v2] aarch64/gdbserver: fix floating point registers display
Commit Message
When using aarch64 gdb with gdbserver, floating point registers are
not correctly displayed, as below:
(gdb) info registers fpsr fpcr
fpsr <unavailable>
fpcr <unavailable>
To fix these problems, the missing fpsr and fpcr registers are added
when floating point registers are read/write
gdb/gdbserver/
2014-08-12 Catalin Udma <catalin.udma@freescale.com>
* linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
(AARCH64_FPCR_REGNO): Likewise.
(AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
(aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
(aarch64_store_fpregset): Likewise.
---
gdb/gdbserver/linux-aarch64-low.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
Comments
On 22 August 2014 07:54, Catalin Udma <catalin.udma@freescale.com> wrote:
> When using aarch64 gdb with gdbserver, floating point registers are
> not correctly displayed, as below:
> (gdb) info registers fpsr fpcr
> fpsr <unavailable>
> fpcr <unavailable>
>
> To fix these problems, the missing fpsr and fpcr registers are added
> when floating point registers are read/write
>
> gdb/gdbserver/
> 2014-08-12 Catalin Udma <catalin.udma@freescale.com>
>
> * linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
> (AARCH64_FPCR_REGNO): Likewise.
> (AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
> (aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
> (aarch64_store_fpregset): Likewise.
Does this version of the patch assume that
https://sourceware.org/ml/gdb-patches/2013-12/msg00720.html has been
reverted?
Cheers
/Marcus
> Does this version of the patch assume that
> https://sourceware.org/ml/gdb-patches/2013-12/msg00720.html has been
> reverted?
>
> Cheers
> /Marcus
[Catalin Udma] Yes, it assumes that the patch has been reverted.
On 22 August 2014 07:54, Catalin Udma <catalin.udma@freescale.com> wrote:
> When using aarch64 gdb with gdbserver, floating point registers are
> not correctly displayed, as below:
> (gdb) info registers fpsr fpcr
> fpsr <unavailable>
> fpcr <unavailable>
>
> To fix these problems, the missing fpsr and fpcr registers are added
> when floating point registers are read/write
>
> gdb/gdbserver/
> 2014-08-12 Catalin Udma <catalin.udma@freescale.com>
>
> * linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
> (AARCH64_FPCR_REGNO): Likewise.
> (AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
> (aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
> (aarch64_store_fpregset): Likewise.
This looks good to me.... and I agree with the views expressed
elsewhere in this list that
https://sourceware.org/ml/gdb-patches/2013-12/msg00720.html should be
reverted pending a proper solution for BE.
.. however... I can't approve your patch here in gdb land.
Cheers
/Marcus
On 09/02/2014 02:47 PM, Marcus Shawcroft wrote:
>> gdb/gdbserver/
>> 2014-08-12 Catalin Udma <catalin.udma@freescale.com>
>>
>> * linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
>> (AARCH64_FPCR_REGNO): Likewise.
>> (AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
>> (aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
>> (aarch64_store_fpregset): Likewise.
>
> This looks good to me....
> .. however... I can't approve your patch here in gdb land.
<rubberstamp> OK </rubberstamp>
Please push.
Thanks,
Pedro Alves
> On 09/02/2014 02:47 PM, Marcus Shawcroft wrote:
> >> gdb/gdbserver/
> >> 2014-08-12 Catalin Udma <catalin.udma@freescale.com>
> >>
> >> * linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
> >> (AARCH64_FPCR_REGNO): Likewise.
> >> (AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
> >> (aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
> >> (aarch64_store_fpregset): Likewise.
> >
> > This looks good to me....
> > .. however... I can't approve your patch here in gdb land.
>
> <rubberstamp> OK </rubberstamp>
>
> Please push.
>
> Thanks,
> Pedro Alves
[Catalin Udma] Are there any updates with this patch?
I see it's not pushed on master.
Thanks,
Catalin
@@ -46,8 +46,10 @@ extern const struct target_desc *tdesc_aarch64;
#define AARCH64_PC_REGNO 32
#define AARCH64_CPSR_REGNO 33
#define AARCH64_V0_REGNO 34
+#define AARCH64_FPSR_REGNO (AARCH64_V0_REGNO + AARCH64_V_REGS_NUM)
+#define AARCH64_FPCR_REGNO (AARCH64_V0_REGNO + AARCH64_V_REGS_NUM + 1)
-#define AARCH64_NUM_REGS (AARCH64_V0_REGNO + AARCH64_V_REGS_NUM)
+#define AARCH64_NUM_REGS (AARCH64_V0_REGNO + AARCH64_V_REGS_NUM + 2)
static int
aarch64_regmap [] =
@@ -255,6 +257,8 @@ aarch64_fill_fpregset (struct regcache *regcache, void *buf)
for (i = 0; i < AARCH64_V_REGS_NUM; i++)
collect_register (regcache, AARCH64_V0_REGNO + i, ®set->vregs[i]);
+ collect_register (regcache, AARCH64_FPSR_REGNO, ®set->fpsr);
+ collect_register (regcache, AARCH64_FPCR_REGNO, ®set->fpcr);
}
static void
@@ -265,6 +269,8 @@ aarch64_store_fpregset (struct regcache *regcache, const void *buf)
for (i = 0; i < AARCH64_V_REGS_NUM; i++)
supply_register (regcache, AARCH64_V0_REGNO + i, ®set->vregs[i]);
+ supply_register (regcache, AARCH64_FPSR_REGNO, ®set->fpsr);
+ supply_register (regcache, AARCH64_FPCR_REGNO, ®set->fpcr);
}
/* Debugging of hardware breakpoint/watchpoint support. */