[PATCH v3 00/24] gdbstub: re-organise to for better compilation behaviour

Alex Bennée posted 24 patches 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230221225227.3735319-1-alex.bennee@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Thomas Huth <thuth@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Yanan Wang <wangyanan55@huawei.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, "Cédric Le Goater" <clg@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, Greg Kurz <groug@kaod.org>, Laurent Vivier <laurent@vivier.eu>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Michael Rolnik <mrolnik@gmail.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Taylor Simpson <tsimpson@quicinc.com>, Sunil Muthuswamy <sunilmut@microsoft.com>, Song Gao <gaosong@loongson.cn>, Xiaojuan Yang <yangxiaojuan@loongson.cn>, Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, Chris Wulff <crwulff@gmail.com>, Marek Vasut <marex@denx.de>, Stafford Horne <shorne@gmail.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Artyom Tarasenko <atar4qemu@gmail.com>, Bastian Koppelmann <kbastian@mail.uni-paderborn.de>, Max Filippov <jcmvbkbc@gmail.com>
MAINTAINERS                                   |    1 +
configure                                     |    8 +
gdbstub/internals.h                           |  214 ++-
include/exec/cpu-defs.h                       |   19 +-
include/exec/exec-all.h                       |    1 -
include/exec/gdbstub.h                        |  208 ---
include/exec/target_long.h                    |   42 +
include/exec/tb-flush.h                       |   26 +
include/gdbstub/helpers.h                     |  103 +
include/gdbstub/syscalls.h                    |  124 ++
include/gdbstub/user.h                        |   43 +
linux-user/user-internals.h                   |    1 +
accel/stubs/tcg-stub.c                        |    1 +
accel/tcg/tb-maint.c                          |    1 +
accel/tcg/translate-all.c                     |    1 +
cpu.c                                         |    1 +
gdbstub/gdbstub.c                             | 1654 ++---------------
gdbstub/softmmu.c                             |  605 +++++-
gdbstub/syscalls.c                            |  217 +++
gdbstub/user-target.c                         |  281 +++
gdbstub/user.c                                |  427 ++++-
hw/ppc/spapr_hcall.c                          |    1 +
linux-user/exit.c                             |    2 +-
linux-user/main.c                             |    1 +
linux-user/signal.c                           |    2 +-
plugins/core.c                                |    1 +
plugins/loader.c                              |    2 +-
semihosting/arm-compat-semi.c                 |    1 +
semihosting/guestfd.c                         |    2 +-
semihosting/syscalls.c                        |    3 +-
softmmu/runstate.c                            |    2 +-
target/alpha/gdbstub.c                        |    2 +-
target/alpha/sys_helper.c                     |    1 +
target/arm/gdbstub.c                          |    1 +
target/arm/gdbstub64.c                        |    2 +-
target/arm/helper-a64.c                       |    2 +-
target/arm/m_helper.c                         |    1 +
target/avr/gdbstub.c                          |    2 +-
target/cris/gdbstub.c                         |    2 +-
target/hexagon/gdbstub.c                      |    2 +-
target/hppa/gdbstub.c                         |    2 +-
target/i386/gdbstub.c                         |    2 +-
target/i386/whpx/whpx-all.c                   |    2 +-
target/loongarch/gdbstub.c                    |    1 +
target/m68k/gdbstub.c                         |    2 +-
target/m68k/helper.c                          |    1 +
target/m68k/m68k-semi.c                       |    3 +-
target/microblaze/gdbstub.c                   |    2 +-
target/mips/gdbstub.c                         |    2 +-
target/mips/tcg/sysemu/mips-semi.c            |    3 +-
target/nios2/cpu.c                            |    2 +-
target/nios2/nios2-semi.c                     |    3 +-
target/openrisc/gdbstub.c                     |    2 +-
target/openrisc/interrupt.c                   |    2 +-
target/openrisc/mmu.c                         |    2 +-
target/ppc/cpu_init.c                         |    2 +-
target/ppc/gdbstub.c                          |    1 +
target/riscv/csr.c                            |    1 +
target/riscv/gdbstub.c                        |    1 +
target/rx/gdbstub.c                           |    2 +-
target/s390x/gdbstub.c                        |    1 +
target/s390x/helper.c                         |    2 +-
target/sh4/gdbstub.c                          |    2 +-
target/sparc/gdbstub.c                        |    2 +-
target/tricore/gdbstub.c                      |    2 +-
target/xtensa/core-dc232b.c                   |    2 +-
target/xtensa/core-dc233c.c                   |    2 +-
target/xtensa/core-de212.c                    |    2 +-
target/xtensa/core-de233_fpu.c                |    2 +-
target/xtensa/core-dsp3400.c                  |    2 +-
target/xtensa/core-fsf.c                      |    2 +-
target/xtensa/core-lx106.c                    |    2 +-
target/xtensa/core-sample_controller.c        |    2 +-
target/xtensa/core-test_kc705_be.c            |    2 +-
target/xtensa/core-test_mmuhifi_c3.c          |    2 +-
target/xtensa/gdbstub.c                       |    2 +-
target/xtensa/helper.c                        |    2 +-
gdbstub/meson.build                           |   33 +-
gdbstub/trace-events                          |    4 +-
scripts/probe-gdb-support.sh                  |   36 +
target/xtensa/import_core.sh                  |    2 +-
tests/tcg/aarch64/Makefile.target             |    2 +-
tests/tcg/multiarch/Makefile.target           |    5 +
.../multiarch/system/Makefile.softmmu-target  |    6 +-
tests/tcg/s390x/Makefile.target               |    2 +-
85 files changed, 2375 insertions(+), 1796 deletions(-)
create mode 100644 include/exec/target_long.h
create mode 100644 include/exec/tb-flush.h
create mode 100644 include/gdbstub/helpers.h
create mode 100644 include/gdbstub/syscalls.h
create mode 100644 include/gdbstub/user.h
create mode 100644 gdbstub/syscalls.c
create mode 100644 gdbstub/user-target.c
create mode 100755 scripts/probe-gdb-support.sh
[PATCH v3 00/24] gdbstub: re-organise to for better compilation behaviour
Posted by Alex Bennée 1 year, 2 months ago
I was motivated to sort this out while working on my register API
which is target agnostic but ran into the weeds when trying to link up
with the gdbstub. This was due to us building gdbstub for every single
target we support due to a few ABI sensitive bits that require CPU
specific information. This series does a bunch of surgery to break the
monolithic file apart into its constituent parts as well as simplify
the headers to users can avoid bringing in more dependencies than they
need.

I had hoped to go all the way and conditionally compile syscalls only
for the two ABIs (32 and 64 bit) unfortunately I was unable to the
appropriate meson-foo to make that happen.

Other than a minor re-org of the patches and addressing review
comments (see bellow ---) the only new patches are the ones to split
target_ulong into its own header and remove the remaining cpu-def
requirements from syscall handling.

The following patches need review:

gdbstub: split out softmmu/user specifics for syscall handling
include: split target_long definition from cpu-defs
testing: probe gdb for supported architectures ahead of time
gdbstub: only compile gdbstub twice for whole build
gdbstub: rationalise signal mapping in softmmu

Alex Bennée (23):
  gdbstub/internals.h: clean up include guard
  gdbstub: fix-up copyright and license files
  gdbstub: define separate user/system structures
  gdbstub: move GDBState to shared internals header
  includes: move tb_flush into its own header
  gdbstub: move fromhex/tohex routines to internals
  gdbstub: make various helpers visible to the rest of the module
  gdbstub: move chunk of softmmu functionality to own file
  gdbstub: move chunks of user code into own files
  gdbstub: rationalise signal mapping in softmmu
  gdbstub: abstract target specific details from gdb_put_packet_binary
  gdbstub: specialise handle_query_attached
  gdbstub: specialise target_memory_rw_debug
  gdbstub: introduce gdb_get_max_cpus
  gdbstub: specialise stub_can_reverse
  gdbstub: fix address type of gdb_set_cpu_pc
  gdbstub: don't use target_ulong while handling registers
  gdbstub: move register helpers into standalone include
  gdbstub: move syscall handling to new file
  gdbstub: only compile gdbstub twice for whole build
  testing: probe gdb for supported architectures ahead of time
  include: split target_long definition from cpu-defs
  gdbstub: split out softmmu/user specifics for syscall handling

Philippe Mathieu-Daudé (1):
  gdbstub: Make syscall_complete/[gs]et_reg target-agnostic typedefs

 MAINTAINERS                                   |    1 +
 configure                                     |    8 +
 gdbstub/internals.h                           |  214 ++-
 include/exec/cpu-defs.h                       |   19 +-
 include/exec/exec-all.h                       |    1 -
 include/exec/gdbstub.h                        |  208 ---
 include/exec/target_long.h                    |   42 +
 include/exec/tb-flush.h                       |   26 +
 include/gdbstub/helpers.h                     |  103 +
 include/gdbstub/syscalls.h                    |  124 ++
 include/gdbstub/user.h                        |   43 +
 linux-user/user-internals.h                   |    1 +
 accel/stubs/tcg-stub.c                        |    1 +
 accel/tcg/tb-maint.c                          |    1 +
 accel/tcg/translate-all.c                     |    1 +
 cpu.c                                         |    1 +
 gdbstub/gdbstub.c                             | 1654 ++---------------
 gdbstub/softmmu.c                             |  605 +++++-
 gdbstub/syscalls.c                            |  217 +++
 gdbstub/user-target.c                         |  281 +++
 gdbstub/user.c                                |  427 ++++-
 hw/ppc/spapr_hcall.c                          |    1 +
 linux-user/exit.c                             |    2 +-
 linux-user/main.c                             |    1 +
 linux-user/signal.c                           |    2 +-
 plugins/core.c                                |    1 +
 plugins/loader.c                              |    2 +-
 semihosting/arm-compat-semi.c                 |    1 +
 semihosting/guestfd.c                         |    2 +-
 semihosting/syscalls.c                        |    3 +-
 softmmu/runstate.c                            |    2 +-
 target/alpha/gdbstub.c                        |    2 +-
 target/alpha/sys_helper.c                     |    1 +
 target/arm/gdbstub.c                          |    1 +
 target/arm/gdbstub64.c                        |    2 +-
 target/arm/helper-a64.c                       |    2 +-
 target/arm/m_helper.c                         |    1 +
 target/avr/gdbstub.c                          |    2 +-
 target/cris/gdbstub.c                         |    2 +-
 target/hexagon/gdbstub.c                      |    2 +-
 target/hppa/gdbstub.c                         |    2 +-
 target/i386/gdbstub.c                         |    2 +-
 target/i386/whpx/whpx-all.c                   |    2 +-
 target/loongarch/gdbstub.c                    |    1 +
 target/m68k/gdbstub.c                         |    2 +-
 target/m68k/helper.c                          |    1 +
 target/m68k/m68k-semi.c                       |    3 +-
 target/microblaze/gdbstub.c                   |    2 +-
 target/mips/gdbstub.c                         |    2 +-
 target/mips/tcg/sysemu/mips-semi.c            |    3 +-
 target/nios2/cpu.c                            |    2 +-
 target/nios2/nios2-semi.c                     |    3 +-
 target/openrisc/gdbstub.c                     |    2 +-
 target/openrisc/interrupt.c                   |    2 +-
 target/openrisc/mmu.c                         |    2 +-
 target/ppc/cpu_init.c                         |    2 +-
 target/ppc/gdbstub.c                          |    1 +
 target/riscv/csr.c                            |    1 +
 target/riscv/gdbstub.c                        |    1 +
 target/rx/gdbstub.c                           |    2 +-
 target/s390x/gdbstub.c                        |    1 +
 target/s390x/helper.c                         |    2 +-
 target/sh4/gdbstub.c                          |    2 +-
 target/sparc/gdbstub.c                        |    2 +-
 target/tricore/gdbstub.c                      |    2 +-
 target/xtensa/core-dc232b.c                   |    2 +-
 target/xtensa/core-dc233c.c                   |    2 +-
 target/xtensa/core-de212.c                    |    2 +-
 target/xtensa/core-de233_fpu.c                |    2 +-
 target/xtensa/core-dsp3400.c                  |    2 +-
 target/xtensa/core-fsf.c                      |    2 +-
 target/xtensa/core-lx106.c                    |    2 +-
 target/xtensa/core-sample_controller.c        |    2 +-
 target/xtensa/core-test_kc705_be.c            |    2 +-
 target/xtensa/core-test_mmuhifi_c3.c          |    2 +-
 target/xtensa/gdbstub.c                       |    2 +-
 target/xtensa/helper.c                        |    2 +-
 gdbstub/meson.build                           |   33 +-
 gdbstub/trace-events                          |    4 +-
 scripts/probe-gdb-support.sh                  |   36 +
 target/xtensa/import_core.sh                  |    2 +-
 tests/tcg/aarch64/Makefile.target             |    2 +-
 tests/tcg/multiarch/Makefile.target           |    5 +
 .../multiarch/system/Makefile.softmmu-target  |    6 +-
 tests/tcg/s390x/Makefile.target               |    2 +-
 85 files changed, 2375 insertions(+), 1796 deletions(-)
 create mode 100644 include/exec/target_long.h
 create mode 100644 include/exec/tb-flush.h
 create mode 100644 include/gdbstub/helpers.h
 create mode 100644 include/gdbstub/syscalls.h
 create mode 100644 include/gdbstub/user.h
 create mode 100644 gdbstub/syscalls.c
 create mode 100644 gdbstub/user-target.c
 create mode 100755 scripts/probe-gdb-support.sh

-- 
2.39.1