Message ID | 20250324102142.67022-1-alex.bennee@linaro.org |
---|---|
Headers | show |
Series | gdbstub: conversion to runtime endianess helpers | expand |
On 3/24/25 03:21, Alex Bennée wrote: > The aim of this work is to get rid of the endian aware helpers in > gdbstub/helpers.h which due to their use of tswap() mean target > gdbstubs need to be built multiple times. While this series doesn't > actually build each stub once it introduces a new helper - > gdb_get_register_value() which takes a MemOp which can describe the > current endian state of the system. This will be a lot easier to > dynamically feed from a helper function. > > The most complex example is PPC which has a helper called > ppc_maybe_bswap_register() which was doing this. > > This is still an RFC but I've spun out v2 for further discussion. > > In v2: > > - drop uint8_t casting and use void as C intended ;-) C allows that permissively, and it can be convenient when underlying type is really unknown. But in our case, it's only two variants. If really it hurts to replace callers, _Generic is at least a better solution than invoking the void* hammer. > - add specific 32/64 bit helpers with type checking an assertion > - various tweaks and fixes (see individual commits) > > There are a few other misc clean-ups I did on the way which might be > worth cherry picking for 10.0 but I'll leave that up to maintainers. > > Alex Bennée (11): > include/exec: fix assert in size_memop > include/gdbstub: fix include guard in commands.h > gdbstub: assert earlier in handle_read_all_regs > gdbstub: introduce target independent gdb register helper > target/arm: convert 32 bit gdbstub to new helpers > target/arm: convert 64 bit gdbstub to new helpers > target/ppc: expand comment on FP/VMX/VSX access functions > target/ppc: make ppc_maybe_bswap_register static > target/ppc: convert gdbstub to new helpers > target/microblaze: convert gdbstub to new helper > include/gdbstub: add note to helpers.h > > include/exec/memop.h | 4 +- > include/gdbstub/commands.h | 2 +- > include/gdbstub/helpers.h | 4 +- > include/gdbstub/registers.h | 55 ++++++++++ > target/ppc/cpu.h | 8 +- > gdbstub/gdbstub.c | 25 ++++- > target/arm/gdbstub.c | 55 ++++++---- > target/arm/gdbstub64.c | 53 ++++++---- > target/microblaze/gdbstub.c | 49 ++++----- > target/ppc/gdbstub.c | 197 ++++++++++++++++++++---------------- > 10 files changed, 292 insertions(+), 160 deletions(-) > create mode 100644 include/gdbstub/registers.h >