Re: [PATCH 1/2] riscv: ptrace: Use the correct API for `fcsr' access

From: Maciej W. Rozycki
Date: Wed Aug 05 2020 - 06:36:23 EST


On Wed, 5 Aug 2020, Al Viro wrote:

> > I'm not sure I understand what you're saying, but given that branch replaces
> > all of this I guess it's best to just do nothing on our end here?
>
> It doesn't replace ->put() (for now); it _does_ replace ->get() and AFAICS the
> replacement is much saner:
>
> static int riscv_fpr_get(struct task_struct *target,
> const struct user_regset *regset,
> struct membuf to)
> {
> struct __riscv_d_ext_state *fstate = &target->thread.fstate;
>
> membuf_write(&to, fstate, offsetof(struct __riscv_d_ext_state, fcsr));
> membuf_store(&to, fstate->fcsr);
> return membuf_zero(&to, 4); // explicitly pad
> }

I'm glad to see the old interface go, it was cumbersome.

> user_regset_copyout() calling conventions are atrocious and so are those of
> regset ->get(). The best thing to do with both is to take them out of their
> misery and be done with that. Do you see any problems with riscv gdbserver
> on current linux-next? If not, I'd rather see that "API" simply go away...
> If there are problems, I would very much prefer fixes on top of what's done
> in that branch.

I can push linux-next through regression-testing with RISC-V gdbserver
and/or native GDB if that would help. This is also used with core dumps,
but honestly I don't know what state RISC-V support is in in the BFD/GDB's
core dump interpreter, as people tend to forget about the core dump
feature nowadays.

Maciej