* [PULL 00/16] gdbstub: Always infer base register index from GDB XML
@ 2026-03-11 1:38 Pierrick Bouvier
2026-03-11 1:38 ` [PULL 01/16] tests/tcg: Temporary disable multiarch tests for PPC targets Pierrick Bouvier
` (17 more replies)
0 siblings, 18 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
The following changes since commit ae56950eac7b61b1abf42003329ee0f3ce111711:
Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
are available in the Git repository at:
https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] (2026-03-10 17:12:18 -0700)
----------------------------------------------------------------
- [PATCH v4 00/16] gdbstub: Always infer base register index from GDB (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-philmd@linaro.org
----------------------------------------------------------------
Alex Bennée (1):
tests/docker: add gdb-multiarch to all-test-cross
Philippe Mathieu-Daudé (15):
tests/tcg: Temporary disable multiarch tests for PPC targets
tests/tcg: Disable prot-none test on GitLab
target/i386/gdbstub: Remove stale comment
meson: Restrict gdbstub to user/system builds
gdbstub: Simplify gdb_init_cpu() logic
gdbstub: Add trace events for around XML parsing / generation
gdbstub: Have scripts/feature_to_c.py generate more verbose output
gdbstub: Make base register explicit in m68k GDB XML files
gdbstub: Remove @g_pos argument in gdb_register_coprocessor()
gdbstub: Emit base_register index in GDBFeature entries
gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor()
tests/tcg: Re-enable disabled multiarch tests for PPC targets
gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
gdbstub: Move gdb-xml/ within gdbstub/
gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
MAINTAINERS | 19 +++++------
docs/devel/codebase.rst | 2 --
configs/targets/aarch64-bsd-user.mak | 2 +-
configs/targets/aarch64-linux-user.mak | 2 +-
configs/targets/aarch64-softmmu.mak | 2 +-
configs/targets/aarch64_be-linux-user.mak | 2 +-
configs/targets/alpha-linux-user.mak | 2 +-
configs/targets/alpha-softmmu.mak | 2 +-
configs/targets/arm-bsd-user.mak | 2 +-
configs/targets/arm-linux-user.mak | 2 +-
configs/targets/arm-softmmu.mak | 2 +-
configs/targets/armeb-linux-user.mak | 2 +-
configs/targets/avr-softmmu.mak | 2 +-
configs/targets/hexagon-linux-user.mak | 2 +-
configs/targets/i386-bsd-user.mak | 2 +-
configs/targets/i386-linux-user.mak | 2 +-
configs/targets/i386-softmmu.mak | 2 +-
configs/targets/loongarch64-linux-user.mak | 2 +-
configs/targets/loongarch64-softmmu.mak | 2 +-
configs/targets/m68k-linux-user.mak | 2 +-
configs/targets/m68k-softmmu.mak | 2 +-
configs/targets/microblaze-linux-user.mak | 2 +-
configs/targets/microblaze-softmmu.mak | 2 +-
configs/targets/microblazeel-linux-user.mak | 2 +-
configs/targets/or1k-linux-user.mak | 2 +-
configs/targets/or1k-softmmu.mak | 2 +-
configs/targets/ppc-linux-user.mak | 2 +-
configs/targets/ppc-softmmu.mak | 2 +-
configs/targets/ppc64-linux-user.mak | 2 +-
configs/targets/ppc64-softmmu.mak | 2 +-
configs/targets/ppc64le-linux-user.mak | 2 +-
configs/targets/riscv32-linux-user.mak | 2 +-
configs/targets/riscv32-softmmu.mak | 2 +-
configs/targets/riscv64-bsd-user.mak | 2 +-
configs/targets/riscv64-linux-user.mak | 2 +-
configs/targets/riscv64-softmmu.mak | 2 +-
configs/targets/rx-softmmu.mak | 2 +-
configs/targets/s390x-linux-user.mak | 2 +-
configs/targets/s390x-softmmu.mak | 2 +-
configs/targets/sparc-linux-user.mak | 2 +-
configs/targets/sparc-softmmu.mak | 2 +-
configs/targets/sparc32plus-linux-user.mak | 2 +-
configs/targets/sparc64-linux-user.mak | 2 +-
configs/targets/sparc64-softmmu.mak | 2 +-
configs/targets/x86_64-bsd-user.mak | 2 +-
configs/targets/x86_64-linux-user.mak | 2 +-
configs/targets/x86_64-softmmu.mak | 2 +-
meson.build | 12 +------
include/exec/gdbstub.h | 4 +--
stubs/gdbstub.c => gdbstub/gdb-xml-stub.c | 0
gdbstub/gdbstub.c | 38 ++++++++++++++--------
target/arm/gdbstub.c | 21 +++++-------
target/arm/gdbstub64.c | 19 ++++-------
target/hexagon/cpu.c | 2 +-
target/i386/gdbstub.c | 12 +++----
target/loongarch/gdbstub.c | 6 ++--
target/m68k/helper.c | 4 +--
target/microblaze/cpu.c | 3 +-
target/ppc/gdbstub.c | 11 +++----
target/riscv/gdbstub.c | 18 ++++------
target/s390x/gdbstub.c | 15 ++++-----
target/sparc/gdbstub.c | 12 +++----
{gdb-xml => gdbstub/gdb-xml}/aarch64-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-mte.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-pauth.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-sme2.xml | 0
{gdb-xml => gdbstub/gdb-xml}/alpha-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-m-profile-mve.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-m-profile.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-neon.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-vfp-sysregs.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-vfp.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-vfp3.xml | 0
{gdb-xml => gdbstub/gdb-xml}/avr-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/cf-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/cf-fp.xml | 2 +-
{gdb-xml => gdbstub/gdb-xml}/hexagon-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/hexagon-hvx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-32bit-linux.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-32bit.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-64bit-apx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-64bit-linux.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-64bit.xml | 0
{gdb-xml => gdbstub/gdb-xml}/loongarch-base32.xml | 0
{gdb-xml => gdbstub/gdb-xml}/loongarch-base64.xml | 0
{gdb-xml => gdbstub/gdb-xml}/loongarch-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/loongarch-lasx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/loongarch-lsx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/m68k-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/m68k-fp.xml | 2 +-
{gdb-xml => gdbstub/gdb-xml}/microblaze-core.xml | 0
.../gdb-xml}/microblaze-stack-protect.xml | 0
{gdb-xml => gdbstub/gdb-xml}/or1k-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-altivec.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-spe.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-vsx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power64-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/riscv-32bit-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/riscv-32bit-fpu.xml | 0
.../gdb-xml}/riscv-32bit-virtual.xml | 0
{gdb-xml => gdbstub/gdb-xml}/riscv-64bit-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/riscv-64bit-fpu.xml | 0
.../gdb-xml}/riscv-64bit-virtual.xml | 0
{gdb-xml => gdbstub/gdb-xml}/rx-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-acr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-cr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-fpr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-gs.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-virt-kvm.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-virt.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-vx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390x-core64.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-cp0.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-cp0.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-fpu.xml | 0
gdbstub/meson.build | 23 +++++++++++++
gdbstub/trace-events | 7 ++++
scripts/feature_to_c.py | 14 +++++---
stubs/meson.build | 2 --
.../dockerfiles/debian-all-test-cross.docker | 1 +
tests/lcitool/refresh | 1 +
tests/tcg/multiarch/Makefile.target | 7 ++++
129 files changed, 179 insertions(+), 168 deletions(-)
rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-mte.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-pauth.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-sme2.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/alpha-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-m-profile-mve.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-m-profile.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-neon.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp-sysregs.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp3.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/avr-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/cf-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/cf-fp.xml (93%)
rename {gdb-xml => gdbstub/gdb-xml}/hexagon-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/hexagon-hvx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-32bit-linux.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-32bit.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit-apx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit-linux.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-base32.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-base64.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-lasx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-lsx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/m68k-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/m68k-fp.xml (93%)
rename {gdb-xml => gdbstub/gdb-xml}/microblaze-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/microblaze-stack-protect.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/or1k-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-altivec.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-spe.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-vsx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power64-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-virtual.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-virtual.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/rx-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-acr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-cr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-fpr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-gs.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-virt-kvm.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-virt.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-vx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390x-core64.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-cp0.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-cp0.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-fpu.xml (100%)
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PULL 01/16] tests/tcg: Temporary disable multiarch tests for PPC targets
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 02/16] tests/tcg: Disable prot-none test on GitLab Pierrick Bouvier
` (16 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
gdbstub is currently broken for the PPC targets [*]. We
didn't notice because our tests require gdb-multiarch which
isn't installed on our containers. Next patch will fix that,
but we need to temporary disable the PPC target test to keep
our CI green.
[*] https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-Id: <c957fe25-a0a2-405f-be83-d411261c21e6@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-2-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
tests/tcg/multiarch/Makefile.target | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index a347efbadf0..73c2a78215c 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -156,12 +156,16 @@ else
run-gdbstub-%:
$(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
endif
+# gdbstub currently broken on ppc, see:
+# https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
+ifneq ($(TARGET_NAME), ppc)
EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
run-gdbstub-registers run-gdbstub-prot-none \
run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
run-gdbstub-follow-fork-mode-parent \
run-gdbstub-qxfer-siginfo-read run-gdbstub-late-attach
+endif
# ARM Compatible Semi Hosting Tests
#
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 02/16] tests/tcg: Disable prot-none test on GitLab
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
2026-03-11 1:38 ` [PULL 01/16] tests/tcg: Temporary disable multiarch tests for PPC targets Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 03/16] tests/docker: add gdb-multiarch to all-test-cross Pierrick Bouvier
` (15 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
When adding gdb-multiarch on our container images, we
see the prot-none tests to pass on GitHub but fail on
GitLab. Disable and track:
https://gitlab.com/qemu-project/qemu/-/issues/3329
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-3-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
tests/tcg/multiarch/Makefile.target | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 73c2a78215c..1b5760c2f39 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -117,12 +117,19 @@ run-gdbstub-registers: sha512
--bin $< --test $(MULTIARCH_SRC)/gdbstub/registers.py, \
checking register enumeration)
+# The prot-none test was skipped on gitlab due to missing gdb-multiarch,
+# however it seems to have bitrotten. Disable, it is tracked as
+# https://gitlab.com/qemu-project/qemu/-/issues/3329
run-gdbstub-prot-none: prot-none
+ifneq ($(GITLAB_CI),)
+ $(call skip-test, $<, "Broken on GitLab")
+else
$(call run-test, $@, env PROT_NONE_PY=1 $(GDB_SCRIPT) \
--gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(MULTIARCH_SRC)/gdbstub/prot-none.py, \
accessing PROT_NONE memory)
+endif
run-gdbstub-catch-syscalls: catch-syscalls
$(call run-test, $@, $(GDB_SCRIPT) \
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 03/16] tests/docker: add gdb-multiarch to all-test-cross
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
2026-03-11 1:38 ` [PULL 01/16] tests/tcg: Temporary disable multiarch tests for PPC targets Pierrick Bouvier
2026-03-11 1:38 ` [PULL 02/16] tests/tcg: Disable prot-none test on GitLab Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 04/16] target/i386/gdbstub: Remove stale comment Pierrick Bouvier
` (14 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Alex Bennée <alex.bennee@linaro.org>
This allows the gdb integration tests to be run as well.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260306161728.2657486-2-alex.bennee@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-4-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
tests/docker/dockerfiles/debian-all-test-cross.docker | 1 +
tests/lcitool/refresh | 1 +
2 files changed, 2 insertions(+)
diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker
index b73776d95b5..287770a995a 100644
--- a/tests/docker/dockerfiles/debian-all-test-cross.docker
+++ b/tests/docker/dockerfiles/debian-all-test-cross.docker
@@ -59,6 +59,7 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
clang\
dpkg-dev\
+ gdb-multiarch\
libclang-rt-dev
ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \
libc6-dev-arm64-cross \
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index 3e4b026035b..259e6ea0729 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -167,6 +167,7 @@ debian_all_test_cross_compilers = [
" apt install -y --no-install-recommends \\\n",
" clang\\\n",
" dpkg-dev\\\n",
+ " gdb-multiarch\\\n",
" libclang-rt-dev\n",
"ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \\\n",
" libc6-dev-arm64-cross \\\n",
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 04/16] target/i386/gdbstub: Remove stale comment
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (2 preceding siblings ...)
2026-03-11 1:38 ` [PULL 03/16] tests/docker: add gdb-multiarch to all-test-cross Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 05/16] meson: Restrict gdbstub to user/system builds Pierrick Bouvier
` (13 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Since commit ecd6f6a8820 ("gdbstub: Infer number of core
registers from XML") gdb_num_core_regs is inferred for
the x86 targets. Remove a stale comment.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-5-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
target/i386/gdbstub.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c
index f1ce90a046e..b86520f8f9c 100644
--- a/target/i386/gdbstub.c
+++ b/target/i386/gdbstub.c
@@ -39,9 +39,7 @@ static const int gpr_map[CPU_NB_EREGS] = {
static const int gpr_map32[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
/*
- * Keep these in sync with assignment to
- * gdb_num_core_regs in target/i386/cpu.c
- * and with the machine description
+ * Keep these in sync with the machine description
*/
/*
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 05/16] meson: Restrict gdbstub to user/system builds
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (3 preceding siblings ...)
2026-03-11 1:38 ` [PULL 04/16] target/i386/gdbstub: Remove stale comment Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 06/16] gdbstub: Simplify gdb_init_cpu() logic Pierrick Bouvier
` (12 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Limited builds (tools, documentation) don't need to generate /
build gdbstub files. Only process the gdbstub/ folder when
user / system emulation / acceleration is built.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-6-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 1867560da63..db8918dd303 100644
--- a/meson.build
+++ b/meson.build
@@ -3754,7 +3754,6 @@ subdir('qom')
subdir('authz')
subdir('crypto')
subdir('ui')
-subdir('gdbstub')
subdir('semihosting')
subdir('audio')
subdir('io')
@@ -3805,6 +3804,7 @@ if have_system or have_user
output: 'decode-@BASENAME@.c.inc',
arguments: ['@INPUT@', '@EXTRA_ARGS@', '-o', '@OUTPUT@'])
subdir('libdecnumber')
+ subdir('gdbstub')
subdir('target')
endif
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 06/16] gdbstub: Simplify gdb_init_cpu() logic
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (4 preceding siblings ...)
2026-03-11 1:38 ` [PULL 05/16] meson: Restrict gdbstub to user/system builds Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 07/16] gdbstub: Add trace events for around XML parsing / generation Pierrick Bouvier
` (11 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Ensure we either set gdb_num_core_regs or have a XML file.
We shouldn't modify CPUClass content, so mark it const.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-7-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
gdbstub/gdbstub.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 90f4b95135b..221951c22b0 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -582,22 +582,20 @@ static const char *gdb_get_core_xml_file(CPUState *cpu)
void gdb_init_cpu(CPUState *cpu)
{
- CPUClass *cc = cpu->cc;
+ const CPUClass *cc = cpu->cc;
const GDBFeature *feature;
const char *xmlfile = gdb_get_core_xml_file(cpu);
cpu->gdb_regs = g_array_new(false, false, sizeof(GDBRegisterState));
if (xmlfile) {
+ assert(!cc->gdb_num_core_regs);
feature = gdb_find_static_feature(xmlfile);
gdb_register_feature(cpu, 0,
cc->gdb_read_register, cc->gdb_write_register,
feature);
- assert(!cc->gdb_num_core_regs);
cpu->gdb_num_regs = cpu->gdb_num_g_regs = feature->num_regs;
- }
-
- if (cc->gdb_num_core_regs) {
+ } else {
cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs;
}
}
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 07/16] gdbstub: Add trace events for around XML parsing / generation
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (5 preceding siblings ...)
2026-03-11 1:38 ` [PULL 06/16] gdbstub: Simplify gdb_init_cpu() logic Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 08/16] gdbstub: Have scripts/feature_to_c.py generate more verbose output Pierrick Bouvier
` (10 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Add trace events to help follow how the various files in
gdb-xml/ are parsed or generated at runtime.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-8-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
gdbstub/gdbstub.c | 14 ++++++++++++++
gdbstub/trace-events | 6 ++++++
2 files changed, 20 insertions(+)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 221951c22b0..5c1a18e055c 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -478,6 +478,10 @@ void gdb_feature_builder_end(const GDBFeatureBuilder *builder)
builder->feature->num_regs = builder->regs->len;
builder->feature->regs = (void *)g_ptr_array_free(builder->regs, FALSE);
+ trace_gdbxml_feature_builder_header(builder->feature->name,
+ builder->feature->xmlname,
+ builder->feature->num_regs);
+ trace_gdbxml_feature_builder_content(builder->feature->xml);
}
const GDBFeature *gdb_find_static_feature(const char *xmlname)
@@ -511,6 +515,10 @@ GArray *gdb_get_register_list(CPUState *cpu)
name,
r->feature->name
};
+ trace_gdbxml_get_register_list(r->feature->name,
+ r->feature->xmlname,
+ r->feature->base_reg,
+ r->base_reg + i, name);
g_array_append_val(results, desc);
}
}
@@ -563,6 +571,8 @@ static void gdb_register_feature(CPUState *cpu, int base_reg,
.feature = feature
};
+ trace_gdbxml_register_feature(feature->name, feature->xmlname,
+ base_reg, feature->num_regs);
g_array_append_val(cpu->gdb_regs, s);
}
@@ -598,6 +608,10 @@ void gdb_init_cpu(CPUState *cpu)
} else {
cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs;
}
+
+ trace_gdbxml_init_cpu(object_get_typename(OBJECT(cpu)), cpu->cpu_index,
+ cpu->gdb_num_regs, cpu->gdb_num_g_regs,
+ cc->gdb_num_core_regs);
}
void gdb_register_coprocessor(CPUState *cpu,
diff --git a/gdbstub/trace-events b/gdbstub/trace-events
index 4fd126a38c1..8caee36c242 100644
--- a/gdbstub/trace-events
+++ b/gdbstub/trace-events
@@ -28,5 +28,11 @@ gdbstub_err_checksum_invalid(uint8_t ch) "got invalid command checksum digit: 0x
gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got) "got command packet with incorrect checksum, expected=0x%02x, received=0x%02x"
gdbstub_err_unexpected_runpkt(uint8_t ch) "unexpected packet (0x%02x) while target running"
+gdbxml_init_cpu(const char *typename, unsigned id, unsigned gdb_num_regs, unsigned gdb_num_g_regs, unsigned gdb_num_core_regs) "%s:%d regs:%u g_regs:%u core_regs:%u"
+gdbxml_register_feature(const char *featname, const char *xmlname, unsigned base_reg, unsigned num_regs) "%s (%s) @%u +%u"
+gdbxml_feature_builder_header(const char *name, const char *xmlname, int num_regs) "%s (%s) regs:%d"
+gdbxml_feature_builder_content(const char *xml) "%s"
+gdbxml_get_register_list(const char *featname, const char *xmlname, unsigned feat_base_reg, unsigned base_reg, const char *regname) "%s (%s) [%u,%u]:%s"
+
# system.c
gdbstub_hit_watchpoint(const char *type, int cpu_gdb_index, uint64_t vaddr) "Watchpoint hit, type=\"%s\" cpu=%d, vaddr=0x%" PRIx64 ""
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 08/16] gdbstub: Have scripts/feature_to_c.py generate more verbose output
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (6 preceding siblings ...)
2026-03-11 1:38 ` [PULL 07/16] gdbstub: Add trace events for around XML parsing / generation Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 09/16] gdbstub: Make base register explicit in m68k GDB XML files Pierrick Bouvier
` (9 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Make the structure field names explicit, so it is easier
to figure what is what when reviewing multiple entries.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-9-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
scripts/feature_to_c.py | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/scripts/feature_to_c.py b/scripts/feature_to_c.py
index 3aa62fb895f..1329695ad04 100644
--- a/scripts/feature_to_c.py
+++ b/scripts/feature_to_c.py
@@ -85,13 +85,16 @@ def writeliteral(indent, bytes):
num_regs = max(regnums) - base_reg + 1 if len(regnums) else 0
sys.stdout.write(' {\n')
- writeliteral(8, bytes(os.path.basename(input), 'utf-8'))
+ sys.stdout.write(' .xmlname = ')
+ writeliteral(0, bytes(os.path.basename(input), 'utf-8'))
sys.stdout.write(',\n')
- writeliteral(8, read)
+ sys.stdout.write(' .xml = \n')
+ writeliteral(12, read)
sys.stdout.write(',\n')
- writeliteral(8, bytes(feature_name, 'utf-8'))
+ sys.stdout.write(' .name = ')
+ writeliteral(0, bytes(feature_name, 'utf-8'))
sys.stdout.write(',\n')
- sys.stdout.write(f' (const char * const [{num_regs}]) {{\n')
+ sys.stdout.write(f' .regs = (const char * const [{num_regs}]) {{\n')
for index, regname in enumerate(regnames):
sys.stdout.write(f' [{regnums[index] - base_reg}] =\n')
@@ -99,7 +102,7 @@ def writeliteral(indent, bytes):
sys.stdout.write(',\n')
sys.stdout.write( ' },\n')
- sys.stdout.write(f' {num_regs},\n')
+ sys.stdout.write(f' .num_regs = {num_regs},\n')
sys.stdout.write( ' },\n')
sys.stdout.write(' { NULL }\n};\n')
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 09/16] gdbstub: Make base register explicit in m68k GDB XML files
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (7 preceding siblings ...)
2026-03-11 1:38 ` [PULL 08/16] gdbstub: Have scripts/feature_to_c.py generate more verbose output Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 10/16] gdbstub: Remove @g_pos argument in gdb_register_coprocessor() Pierrick Bouvier
` (8 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Both gdb-xml/cf-fp.xml and gdb-xml/m68k-fp.xml aren't imported
from GDB repository. Presumably they are hand-written, and lack
the @regnum XML tag.
This might explain why gdb_register_coprocessor() have a @g_pos
argument, only used for these 2 m68k files.
Fixes: 56aebc89167 ("Add GDB XML register description support")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-10-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
target/m68k/helper.c | 4 ++--
gdb-xml/cf-fp.xml | 2 +-
gdb-xml/m68k-fp.xml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 15f110fa7a2..c566cb0a16c 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -129,10 +129,10 @@ void m68k_cpu_init_gdb(M68kCPU *cpu)
if (m68k_feature(env, M68K_FEATURE_CF_FPU)) {
gdb_register_coprocessor(cs, cf_fpu_gdb_get_reg, cf_fpu_gdb_set_reg,
- gdb_find_static_feature("cf-fp.xml"), 18);
+ gdb_find_static_feature("cf-fp.xml"), 0);
} else if (m68k_feature(env, M68K_FEATURE_FPU)) {
gdb_register_coprocessor(cs, m68k_fpu_gdb_get_reg, m68k_fpu_gdb_set_reg,
- gdb_find_static_feature("m68k-fp.xml"), 18);
+ gdb_find_static_feature("m68k-fp.xml"), 0);
}
/* TODO: Add [E]MAC registers. */
}
diff --git a/gdb-xml/cf-fp.xml b/gdb-xml/cf-fp.xml
index bf71c320bfc..27db66ae963 100644
--- a/gdb-xml/cf-fp.xml
+++ b/gdb-xml/cf-fp.xml
@@ -6,7 +6,7 @@
notice and this notice are preserved. -->
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
<feature name="org.gnu.gdb.coldfire.fp">
- <reg name="fp0" bitsize="64" type="float" group="float"/>
+ <reg name="fp0" bitsize="64" type="float" group="float" regnum="18"/>
<reg name="fp1" bitsize="64" type="float" group="float"/>
<reg name="fp2" bitsize="64" type="float" group="float"/>
<reg name="fp3" bitsize="64" type="float" group="float"/>
diff --git a/gdb-xml/m68k-fp.xml b/gdb-xml/m68k-fp.xml
index 64290d16306..ec45931b673 100644
--- a/gdb-xml/m68k-fp.xml
+++ b/gdb-xml/m68k-fp.xml
@@ -6,7 +6,7 @@
notice and this notice are preserved. -->
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
<feature name="org.gnu.gdb.coldfire.fp">
- <reg name="fp0" bitsize="96" type="float" group="float"/>
+ <reg name="fp0" bitsize="96" type="float" group="float" regnum="18"/>
<reg name="fp1" bitsize="96" type="float" group="float"/>
<reg name="fp2" bitsize="96" type="float" group="float"/>
<reg name="fp3" bitsize="96" type="float" group="float"/>
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 10/16] gdbstub: Remove @g_pos argument in gdb_register_coprocessor()
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (8 preceding siblings ...)
2026-03-11 1:38 ` [PULL 09/16] gdbstub: Make base register explicit in m68k GDB XML files Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 11/16] gdbstub: Emit base_register index in GDBFeature entries Pierrick Bouvier
` (7 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
gdb_register_coprocessor()'s @g_pos argument is always '0',
meaning it is inferred from cpu->gdb_num_regs. Use instead
feature->base_reg.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-11-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
include/exec/gdbstub.h | 3 +--
gdbstub/gdbstub.c | 10 +---------
target/arm/gdbstub.c | 21 ++++++++-------------
target/arm/gdbstub64.c | 19 +++++++------------
target/hexagon/cpu.c | 2 +-
target/i386/gdbstub.c | 8 +++-----
target/loongarch/gdbstub.c | 6 +++---
target/m68k/helper.c | 4 ++--
target/microblaze/cpu.c | 3 +--
target/ppc/gdbstub.c | 11 +++++------
target/riscv/gdbstub.c | 18 ++++++------------
target/s390x/gdbstub.c | 15 +++++++--------
target/sparc/gdbstub.c | 12 ++++--------
13 files changed, 49 insertions(+), 83 deletions(-)
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index bd7182c4d32..79e47a024ec 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -34,11 +34,10 @@ void gdb_init_cpu(CPUState *cpu);
* @set_reg - set function (gdb modifying)
* @num_regs - number of registers in set
* @xml - xml name of set
- * @gpos - non-zero to append to "general" register set at @gpos
*/
void gdb_register_coprocessor(CPUState *cpu,
gdb_get_reg_cb get_reg, gdb_set_reg_cb set_reg,
- const GDBFeature *feature, int g_pos);
+ const GDBFeature *feature);
/**
* gdb_unregister_coprocessor_all() - unregisters supplemental set of registers
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 5c1a18e055c..69038c66f2b 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -616,7 +616,7 @@ void gdb_init_cpu(CPUState *cpu)
void gdb_register_coprocessor(CPUState *cpu,
gdb_get_reg_cb get_reg, gdb_set_reg_cb set_reg,
- const GDBFeature *feature, int g_pos)
+ const GDBFeature *feature)
{
GDBRegisterState *s;
guint i;
@@ -634,14 +634,6 @@ void gdb_register_coprocessor(CPUState *cpu,
/* Add to end of list. */
cpu->gdb_num_regs += feature->num_regs;
- if (g_pos) {
- if (g_pos != base_reg) {
- error_report("Error: Bad gdb register numbering for '%s', "
- "expected %d got %d", feature->xml, g_pos, base_reg);
- } else {
- cpu->gdb_num_g_regs = cpu->gdb_num_regs;
- }
- }
}
void gdb_unregister_coprocessor_all(CPUState *cpu)
diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
index c7d59fd3726..d6e29c4cf46 100644
--- a/target/arm/gdbstub.c
+++ b/target/arm/gdbstub.c
@@ -534,15 +534,13 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
} else {
if (arm_feature(env, ARM_FEATURE_NEON)) {
gdb_register_coprocessor(cs, vfp_gdb_get_reg, vfp_gdb_set_reg,
- gdb_find_static_feature("arm-neon.xml"),
- 0);
+ gdb_find_static_feature("arm-neon.xml"));
} else if (cpu_isar_feature(aa32_simd_r32, cpu)) {
gdb_register_coprocessor(cs, vfp_gdb_get_reg, vfp_gdb_set_reg,
- gdb_find_static_feature("arm-vfp3.xml"),
- 0);
+ gdb_find_static_feature("arm-vfp3.xml"));
} else if (cpu_isar_feature(aa32_vfp_simd, cpu)) {
gdb_register_coprocessor(cs, vfp_gdb_get_reg, vfp_gdb_set_reg,
- gdb_find_static_feature("arm-vfp.xml"), 0);
+ gdb_find_static_feature("arm-vfp.xml"));
}
if (!arm_feature(env, ARM_FEATURE_M)) {
/*
@@ -550,29 +548,26 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
* expose to gdb.
*/
gdb_register_coprocessor(cs, vfp_gdb_get_sysreg, vfp_gdb_set_sysreg,
- gdb_find_static_feature("arm-vfp-sysregs.xml"),
- 0);
+ gdb_find_static_feature("arm-vfp-sysregs.xml"));
}
}
if (cpu_isar_feature(aa32_mve, cpu) && tcg_enabled()) {
gdb_register_coprocessor(cs, mve_gdb_get_reg, mve_gdb_set_reg,
- gdb_find_static_feature("arm-m-profile-mve.xml"),
- 0);
+ gdb_find_static_feature("arm-m-profile-mve.xml"));
}
gdb_register_coprocessor(cs, arm_gdb_get_sysreg, arm_gdb_set_sysreg,
- arm_gen_dynamic_sysreg_feature(cs, cs->gdb_num_regs),
- 0);
+ arm_gen_dynamic_sysreg_feature(cs, cs->gdb_num_regs));
#ifdef CONFIG_TCG
if (arm_feature(env, ARM_FEATURE_M) && tcg_enabled()) {
gdb_register_coprocessor(cs,
arm_gdb_get_m_systemreg, arm_gdb_set_m_systemreg,
- arm_gen_dynamic_m_systemreg_feature(cs, cs->gdb_num_regs), 0);
+ arm_gen_dynamic_m_systemreg_feature(cs, cs->gdb_num_regs));
#ifndef CONFIG_USER_ONLY
if (arm_feature(env, ARM_FEATURE_M_SECURITY)) {
gdb_register_coprocessor(cs,
arm_gdb_get_m_secextreg, arm_gdb_set_m_secextreg,
- arm_gen_dynamic_m_secextreg_feature(cs, cs->gdb_num_regs), 0);
+ arm_gen_dynamic_m_secextreg_feature(cs, cs->gdb_num_regs));
}
#endif
}
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
index b71666c3a1d..a4fa740caf6 100644
--- a/target/arm/gdbstub64.c
+++ b/target/arm/gdbstub64.c
@@ -887,24 +887,22 @@ void aarch64_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
isar_feature_aa64_sme(&cpu->isar)) {
GDBFeature *feature = arm_gen_dynamic_svereg_feature(cs, cs->gdb_num_regs);
gdb_register_coprocessor(cs, aarch64_gdb_get_sve_reg,
- aarch64_gdb_set_sve_reg, feature, 0);
+ aarch64_gdb_set_sve_reg, feature);
} else {
gdb_register_coprocessor(cs, aarch64_gdb_get_fpu_reg,
aarch64_gdb_set_fpu_reg,
- gdb_find_static_feature("aarch64-fpu.xml"),
- 0);
+ gdb_find_static_feature("aarch64-fpu.xml"));
}
if (isar_feature_aa64_sme(&cpu->isar)) {
GDBFeature *sme_feature =
arm_gen_dynamic_smereg_feature(cs, cs->gdb_num_regs);
gdb_register_coprocessor(cs, aarch64_gdb_get_sme_reg,
- aarch64_gdb_set_sme_reg, sme_feature, 0);
+ aarch64_gdb_set_sme_reg, sme_feature);
if (isar_feature_aa64_sme2(&cpu->isar)) {
gdb_register_coprocessor(cs, aarch64_gdb_get_sme2_reg,
aarch64_gdb_set_sme2_reg,
- gdb_find_static_feature("aarch64-sme2.xml"),
- 0);
+ gdb_find_static_feature("aarch64-sme2.xml"));
}
}
/*
@@ -916,8 +914,7 @@ void aarch64_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
if (isar_feature_aa64_pauth(&cpu->isar)) {
gdb_register_coprocessor(cs, aarch64_gdb_get_pauth_reg,
aarch64_gdb_set_pauth_reg,
- gdb_find_static_feature("aarch64-pauth.xml"),
- 0);
+ gdb_find_static_feature("aarch64-pauth.xml"));
}
#ifdef CONFIG_USER_ONLY
@@ -925,14 +922,12 @@ void aarch64_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
if (cpu_isar_feature(aa64_mte, cpu)) {
gdb_register_coprocessor(cs, aarch64_gdb_get_tag_ctl_reg,
aarch64_gdb_set_tag_ctl_reg,
- gdb_find_static_feature("aarch64-mte.xml"),
- 0);
+ gdb_find_static_feature("aarch64-mte.xml"));
}
#endif
/* All AArch64 CPUs have at least TPIDR */
gdb_register_coprocessor(cs, aarch64_gdb_get_tls_reg,
aarch64_gdb_set_tls_reg,
- arm_gen_dynamic_tls_feature(cs, cs->gdb_num_regs),
- 0);
+ arm_gen_dynamic_tls_feature(cs, cs->gdb_num_regs));
}
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
index 58a22ee41f2..ffd14bb4678 100644
--- a/target/hexagon/cpu.c
+++ b/target/hexagon/cpu.c
@@ -322,7 +322,7 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp)
gdb_register_coprocessor(cs, hexagon_hvx_gdb_read_register,
hexagon_hvx_gdb_write_register,
- gdb_find_static_feature("hexagon-hvx.xml"), 0);
+ gdb_find_static_feature("hexagon-hvx.xml"));
qemu_init_vcpu(cs);
cpu_reset(cs);
diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c
index b86520f8f9c..5c5fa727216 100644
--- a/target/i386/gdbstub.c
+++ b/target/i386/gdbstub.c
@@ -501,8 +501,7 @@ void x86_cpu_gdb_init(CPUState *cs)
if (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF) {
gdb_register_coprocessor(cs, i386_cpu_gdb_get_egprs,
i386_cpu_gdb_set_egprs,
- gdb_find_static_feature("i386-64bit-apx.xml"),
- 0);
+ gdb_find_static_feature("i386-64bit-apx.xml"));
}
#endif
@@ -510,10 +509,9 @@ void x86_cpu_gdb_init(CPUState *cs)
gdb_register_coprocessor(cs, x86_cpu_gdb_read_linux_register,
x86_cpu_gdb_write_linux_register,
#ifdef TARGET_X86_64
- gdb_find_static_feature("i386-64bit-linux.xml"),
+ gdb_find_static_feature("i386-64bit-linux.xml"));
#else
- gdb_find_static_feature("i386-32bit-linux.xml"),
+ gdb_find_static_feature("i386-32bit-linux.xml"));
#endif
- 0);
#endif
}
diff --git a/target/loongarch/gdbstub.c b/target/loongarch/gdbstub.c
index 23a5eecc20b..3e9bdfa8bbf 100644
--- a/target/loongarch/gdbstub.c
+++ b/target/loongarch/gdbstub.c
@@ -180,16 +180,16 @@ void loongarch_cpu_register_gdb_regs_for_features(CPUState *cs)
if (FIELD_EX32(env->cpucfg[2], CPUCFG2, FP)) {
gdb_register_coprocessor(cs, loongarch_gdb_get_fpu, loongarch_gdb_set_fpu,
- gdb_find_static_feature("loongarch-fpu.xml"), 0);
+ gdb_find_static_feature("loongarch-fpu.xml"));
}
if (FIELD_EX32(env->cpucfg[2], CPUCFG2, LSX)) {
gdb_register_coprocessor(cs, loongarch_gdb_get_lsx, loongarch_gdb_set_lsx,
- gdb_find_static_feature("loongarch-lsx.xml"), 0);
+ gdb_find_static_feature("loongarch-lsx.xml"));
}
if (FIELD_EX32(env->cpucfg[2], CPUCFG2, LASX)) {
gdb_register_coprocessor(cs, loongarch_gdb_get_lasx, loongarch_gdb_set_lasx,
- gdb_find_static_feature("loongarch-lasx.xml"), 0);
+ gdb_find_static_feature("loongarch-lasx.xml"));
}
}
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index c566cb0a16c..9bab1843892 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -129,10 +129,10 @@ void m68k_cpu_init_gdb(M68kCPU *cpu)
if (m68k_feature(env, M68K_FEATURE_CF_FPU)) {
gdb_register_coprocessor(cs, cf_fpu_gdb_get_reg, cf_fpu_gdb_set_reg,
- gdb_find_static_feature("cf-fp.xml"), 0);
+ gdb_find_static_feature("cf-fp.xml"));
} else if (m68k_feature(env, M68K_FEATURE_FPU)) {
gdb_register_coprocessor(cs, m68k_fpu_gdb_get_reg, m68k_fpu_gdb_set_reg,
- gdb_find_static_feature("m68k-fp.xml"), 0);
+ gdb_find_static_feature("m68k-fp.xml"));
}
/* TODO: Add [E]MAC registers. */
}
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
index ae41a1a3287..ec513ae82d4 100644
--- a/target/microblaze/cpu.c
+++ b/target/microblaze/cpu.c
@@ -265,8 +265,7 @@ static void mb_cpu_realizefn(DeviceState *dev, Error **errp)
gdb_register_coprocessor(cs, mb_cpu_gdb_read_stack_protect,
mb_cpu_gdb_write_stack_protect,
- gdb_find_static_feature("microblaze-stack-protect.xml"),
- 0);
+ gdb_find_static_feature("microblaze-stack-protect.xml"));
qemu_init_vcpu(cs);
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index e0aae9c9eaf..4d622c5cad5 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -502,24 +502,23 @@ void ppc_gdb_init(CPUState *cs, PowerPCCPUClass *pcc)
{
if (pcc->insns_flags & PPC_FLOAT) {
gdb_register_coprocessor(cs, gdb_get_float_reg, gdb_set_float_reg,
- gdb_find_static_feature("power-fpu.xml"), 0);
+ gdb_find_static_feature("power-fpu.xml"));
}
if (pcc->insns_flags & PPC_ALTIVEC) {
gdb_register_coprocessor(cs, gdb_get_avr_reg, gdb_set_avr_reg,
- gdb_find_static_feature("power-altivec.xml"),
- 0);
+ gdb_find_static_feature("power-altivec.xml"));
}
if (pcc->insns_flags & PPC_SPE) {
gdb_register_coprocessor(cs, gdb_get_spe_reg, gdb_set_spe_reg,
- gdb_find_static_feature("power-spe.xml"), 0);
+ gdb_find_static_feature("power-spe.xml"));
}
if (pcc->insns_flags2 & PPC2_VSX) {
gdb_register_coprocessor(cs, gdb_get_vsx_reg, gdb_set_vsx_reg,
- gdb_find_static_feature("power-vsx.xml"), 0);
+ gdb_find_static_feature("power-vsx.xml"));
}
#ifndef CONFIG_USER_ONLY
gdb_gen_spr_feature(cs);
gdb_register_coprocessor(cs, gdb_get_spr_reg, gdb_set_spr_reg,
- &pcc->gdb_spr, 0);
+ &pcc->gdb_spr);
#endif
}
diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c
index a053009ccd3..6a5b7a82fd4 100644
--- a/target/riscv/gdbstub.c
+++ b/target/riscv/gdbstub.c
@@ -348,32 +348,27 @@ void riscv_cpu_register_gdb_regs_for_features(CPUState *cs)
CPURISCVState *env = &cpu->env;
if (env->misa_ext & RVD) {
gdb_register_coprocessor(cs, riscv_gdb_get_fpu, riscv_gdb_set_fpu,
- gdb_find_static_feature("riscv-64bit-fpu.xml"),
- 0);
+ gdb_find_static_feature("riscv-64bit-fpu.xml"));
} else if (env->misa_ext & RVF) {
gdb_register_coprocessor(cs, riscv_gdb_get_fpu, riscv_gdb_set_fpu,
- gdb_find_static_feature("riscv-32bit-fpu.xml"),
- 0);
+ gdb_find_static_feature("riscv-32bit-fpu.xml"));
}
if (cpu->cfg.ext_zve32x) {
gdb_register_coprocessor(cs, riscv_gdb_get_vector,
riscv_gdb_set_vector,
- ricsv_gen_dynamic_vector_feature(cs, cs->gdb_num_regs),
- 0);
+ ricsv_gen_dynamic_vector_feature(cs, cs->gdb_num_regs));
}
switch (mcc->def->misa_mxl_max) {
case MXL_RV32:
gdb_register_coprocessor(cs, riscv_gdb_get_virtual,
riscv_gdb_set_virtual,
- gdb_find_static_feature("riscv-32bit-virtual.xml"),
- 0);
+ gdb_find_static_feature("riscv-32bit-virtual.xml"));
break;
case MXL_RV64:
case MXL_RV128:
gdb_register_coprocessor(cs, riscv_gdb_get_virtual,
riscv_gdb_set_virtual,
- gdb_find_static_feature("riscv-64bit-virtual.xml"),
- 0);
+ gdb_find_static_feature("riscv-64bit-virtual.xml"));
break;
default:
g_assert_not_reached();
@@ -381,7 +376,6 @@ void riscv_cpu_register_gdb_regs_for_features(CPUState *cs)
if (cpu->cfg.ext_zicsr) {
gdb_register_coprocessor(cs, riscv_gdb_get_csr, riscv_gdb_set_csr,
- riscv_gen_dynamic_csr_feature(cs, cs->gdb_num_regs),
- 0);
+ riscv_gen_dynamic_csr_feature(cs, cs->gdb_num_regs));
}
}
diff --git a/target/s390x/gdbstub.c b/target/s390x/gdbstub.c
index 9ae715add4d..efdaaefa6d0 100644
--- a/target/s390x/gdbstub.c
+++ b/target/s390x/gdbstub.c
@@ -347,34 +347,33 @@ void s390_cpu_gdb_init(CPUState *cs)
{
gdb_register_coprocessor(cs, cpu_read_ac_reg,
cpu_write_ac_reg,
- gdb_find_static_feature("s390-acr.xml"), 0);
+ gdb_find_static_feature("s390-acr.xml"));
gdb_register_coprocessor(cs, cpu_read_fp_reg,
cpu_write_fp_reg,
- gdb_find_static_feature("s390-fpr.xml"), 0);
+ gdb_find_static_feature("s390-fpr.xml"));
gdb_register_coprocessor(cs, cpu_read_vreg,
cpu_write_vreg,
- gdb_find_static_feature("s390-vx.xml"), 0);
+ gdb_find_static_feature("s390-vx.xml"));
gdb_register_coprocessor(cs, cpu_read_gs_reg,
cpu_write_gs_reg,
- gdb_find_static_feature("s390-gs.xml"), 0);
+ gdb_find_static_feature("s390-gs.xml"));
#ifndef CONFIG_USER_ONLY
gdb_register_coprocessor(cs, cpu_read_c_reg,
cpu_write_c_reg,
- gdb_find_static_feature("s390-cr.xml"), 0);
+ gdb_find_static_feature("s390-cr.xml"));
gdb_register_coprocessor(cs, cpu_read_virt_reg,
cpu_write_virt_reg,
- gdb_find_static_feature("s390-virt.xml"), 0);
+ gdb_find_static_feature("s390-virt.xml"));
if (kvm_enabled()) {
gdb_register_coprocessor(cs, cpu_read_virt_kvm_reg,
cpu_write_virt_kvm_reg,
- gdb_find_static_feature("s390-virt-kvm.xml"),
- 0);
+ gdb_find_static_feature("s390-virt-kvm.xml"));
}
#endif
}
diff --git a/target/sparc/gdbstub.c b/target/sparc/gdbstub.c
index 792bf70a145..2874ce1b350 100644
--- a/target/sparc/gdbstub.c
+++ b/target/sparc/gdbstub.c
@@ -271,20 +271,16 @@ void sparc_cpu_register_gdb_regs(CPUState *cs)
#if defined(TARGET_ABI32) || !defined(TARGET_SPARC64)
gdb_register_coprocessor(cs, sparc_fpu_gdb_read_register,
sparc_fpu_gdb_write_register,
- gdb_find_static_feature("sparc32-fpu.xml"),
- 0);
+ gdb_find_static_feature("sparc32-fpu.xml"));
gdb_register_coprocessor(cs, sparc_cp0_gdb_read_register,
sparc_cp0_gdb_write_register,
- gdb_find_static_feature("sparc32-cp0.xml"),
- 0);
+ gdb_find_static_feature("sparc32-cp0.xml"));
#else
gdb_register_coprocessor(cs, sparc_fpu_gdb_read_register,
sparc_fpu_gdb_write_register,
- gdb_find_static_feature("sparc64-fpu.xml"),
- 0);
+ gdb_find_static_feature("sparc64-fpu.xml"));
gdb_register_coprocessor(cs, sparc_cp0_gdb_read_register,
sparc_cp0_gdb_write_register,
- gdb_find_static_feature("sparc64-cp0.xml"),
- 0);
+ gdb_find_static_feature("sparc64-cp0.xml"));
#endif
}
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 11/16] gdbstub: Emit base_register index in GDBFeature entries
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (9 preceding siblings ...)
2026-03-11 1:38 ` [PULL 10/16] gdbstub: Remove @g_pos argument in gdb_register_coprocessor() Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 12/16] gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor() Pierrick Bouvier
` (6 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Record the base register index in the generated C file.
Check at runtime that either @g_pos argument of
gdb_register_coprocessor() is zero, or it the base register
index.
This change pass 'make check-tcg' test suite, which runs the
tests/tcg/multiarch/gdbstub/registers.py test, itself calling
gdb_register_coprocessor() for each target tested.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-12-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
include/exec/gdbstub.h | 1 +
scripts/feature_to_c.py | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index 79e47a024ec..75eb4d9c365 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -6,6 +6,7 @@ typedef struct GDBFeature {
const char *xml;
const char *name;
const char * const *regs;
+ int base_reg;
int num_regs;
} GDBFeature;
diff --git a/scripts/feature_to_c.py b/scripts/feature_to_c.py
index 1329695ad04..a52cd2e9ec6 100644
--- a/scripts/feature_to_c.py
+++ b/scripts/feature_to_c.py
@@ -102,6 +102,7 @@ def writeliteral(indent, bytes):
sys.stdout.write(',\n')
sys.stdout.write( ' },\n')
+ sys.stdout.write(f' .base_reg = {base_reg},\n')
sys.stdout.write(f' .num_regs = {num_regs},\n')
sys.stdout.write( ' },\n')
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 12/16] gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor()
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (10 preceding siblings ...)
2026-03-11 1:38 ` [PULL 11/16] gdbstub: Emit base_register index in GDBFeature entries Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 13/16] tests/tcg: Re-enable disabled multiarch tests for PPC targets Pierrick Bouvier
` (5 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
When a feature XML file provides a "regnum=" tag to indicate
the registers base index, respect it, as it might not be the
same as our current number of registered entries, in particular
when there are gaps.
This fixes a bug with the "power-fpu.xml" file [*] which was
loaded at index 70 while the base register is 71. This latent
bug was exposed by commit 1ec0fbe2dda ("target/ppc: Fix
CPUClass::gdb_num_core_regs value").
[*] https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
Reported-by: Florian Hofhammer <florian.hofhammer@fhofhammer.de>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-13-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
gdbstub/gdbstub.c | 6 ++++++
gdbstub/trace-events | 1 +
2 files changed, 7 insertions(+)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 69038c66f2b..c3c944e965b 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -601,6 +601,7 @@ void gdb_init_cpu(CPUState *cpu)
if (xmlfile) {
assert(!cc->gdb_num_core_regs);
feature = gdb_find_static_feature(xmlfile);
+ assert(feature->base_reg == 0);
gdb_register_feature(cpu, 0,
cc->gdb_read_register, cc->gdb_write_register,
feature);
@@ -630,6 +631,11 @@ void gdb_register_coprocessor(CPUState *cpu,
}
}
+ if (base_reg < feature->base_reg) {
+ trace_gdbxml_register_coprocessor_gap(base_reg,
+ feature->base_reg);
+ base_reg = feature->base_reg;
+ }
gdb_register_feature(cpu, base_reg, get_reg, set_reg, feature);
/* Add to end of list. */
diff --git a/gdbstub/trace-events b/gdbstub/trace-events
index 8caee36c242..5bc83946743 100644
--- a/gdbstub/trace-events
+++ b/gdbstub/trace-events
@@ -29,6 +29,7 @@ gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got) "got command packe
gdbstub_err_unexpected_runpkt(uint8_t ch) "unexpected packet (0x%02x) while target running"
gdbxml_init_cpu(const char *typename, unsigned id, unsigned gdb_num_regs, unsigned gdb_num_g_regs, unsigned gdb_num_core_regs) "%s:%d regs:%u g_regs:%u core_regs:%u"
+gdbxml_register_coprocessor_gap(unsigned gdb_num_regs, unsigned base_reg) "regs %u -> %u"
gdbxml_register_feature(const char *featname, const char *xmlname, unsigned base_reg, unsigned num_regs) "%s (%s) @%u +%u"
gdbxml_feature_builder_header(const char *name, const char *xmlname, int num_regs) "%s (%s) regs:%d"
gdbxml_feature_builder_content(const char *xml) "%s"
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 13/16] tests/tcg: Re-enable disabled multiarch tests for PPC targets
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (11 preceding siblings ...)
2026-03-11 1:38 ` [PULL 12/16] gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor() Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 14/16] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Pierrick Bouvier
` (4 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Previous patch fixed gdbstub / PPC, we can run the tests again.
Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-14-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
tests/tcg/multiarch/Makefile.target | 4 ----
1 file changed, 4 deletions(-)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 1b5760c2f39..508149d57bd 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -163,16 +163,12 @@ else
run-gdbstub-%:
$(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
endif
-# gdbstub currently broken on ppc, see:
-# https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
-ifneq ($(TARGET_NAME), ppc)
EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
run-gdbstub-registers run-gdbstub-prot-none \
run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
run-gdbstub-follow-fork-mode-parent \
run-gdbstub-qxfer-siginfo-read run-gdbstub-late-attach
-endif
# ARM Compatible Semi Hosting Tests
#
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 14/16] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (12 preceding siblings ...)
2026-03-11 1:38 ` [PULL 13/16] tests/tcg: Re-enable disabled multiarch tests for PPC targets Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 15/16] gdbstub: Move gdb-xml/ within gdbstub/ Pierrick Bouvier
` (3 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
All GDB XML files are in the gdb-xml/ directory. No need to be
so verbose in TARGET_XML_FILES, let meson prepend the directory.
Except meson.build lines, this is a mechanical change done running:
$ sed -i -e s,gdb-xml/,,g $(git grep -l gdb-xml configs/targets/)
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-15-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
configs/targets/aarch64-bsd-user.mak | 2 +-
configs/targets/aarch64-linux-user.mak | 2 +-
configs/targets/aarch64-softmmu.mak | 2 +-
configs/targets/aarch64_be-linux-user.mak | 2 +-
configs/targets/alpha-linux-user.mak | 2 +-
configs/targets/alpha-softmmu.mak | 2 +-
configs/targets/arm-bsd-user.mak | 2 +-
configs/targets/arm-linux-user.mak | 2 +-
configs/targets/arm-softmmu.mak | 2 +-
configs/targets/armeb-linux-user.mak | 2 +-
configs/targets/avr-softmmu.mak | 2 +-
configs/targets/hexagon-linux-user.mak | 2 +-
configs/targets/i386-bsd-user.mak | 2 +-
configs/targets/i386-linux-user.mak | 2 +-
configs/targets/i386-softmmu.mak | 2 +-
configs/targets/loongarch64-linux-user.mak | 2 +-
configs/targets/loongarch64-softmmu.mak | 2 +-
configs/targets/m68k-linux-user.mak | 2 +-
configs/targets/m68k-softmmu.mak | 2 +-
configs/targets/microblaze-linux-user.mak | 2 +-
configs/targets/microblaze-softmmu.mak | 2 +-
configs/targets/microblazeel-linux-user.mak | 2 +-
configs/targets/or1k-linux-user.mak | 2 +-
configs/targets/or1k-softmmu.mak | 2 +-
configs/targets/ppc-linux-user.mak | 2 +-
configs/targets/ppc-softmmu.mak | 2 +-
configs/targets/ppc64-linux-user.mak | 2 +-
configs/targets/ppc64-softmmu.mak | 2 +-
configs/targets/ppc64le-linux-user.mak | 2 +-
configs/targets/riscv32-linux-user.mak | 2 +-
configs/targets/riscv32-softmmu.mak | 2 +-
configs/targets/riscv64-bsd-user.mak | 2 +-
configs/targets/riscv64-linux-user.mak | 2 +-
configs/targets/riscv64-softmmu.mak | 2 +-
configs/targets/rx-softmmu.mak | 2 +-
configs/targets/s390x-linux-user.mak | 2 +-
configs/targets/s390x-softmmu.mak | 2 +-
configs/targets/sparc-linux-user.mak | 2 +-
configs/targets/sparc-softmmu.mak | 2 +-
configs/targets/sparc32plus-linux-user.mak | 2 +-
configs/targets/sparc64-linux-user.mak | 2 +-
configs/targets/sparc64-softmmu.mak | 2 +-
configs/targets/x86_64-bsd-user.mak | 2 +-
configs/targets/x86_64-linux-user.mak | 2 +-
configs/targets/x86_64-softmmu.mak | 2 +-
meson.build | 6 +++++-
46 files changed, 50 insertions(+), 46 deletions(-)
diff --git a/configs/targets/aarch64-bsd-user.mak b/configs/targets/aarch64-bsd-user.mak
index 03979d82402..814ed2d8bfe 100644
--- a/configs/targets/aarch64-bsd-user.mak
+++ b/configs/targets/aarch64-bsd-user.mak
@@ -1,4 +1,4 @@
TARGET_ARCH=aarch64
TARGET_BASE_ARCH=arm
-TARGET_XML_FILES= gdb-xml/aarch64-core.xml gdb-xml/aarch64-fpu.xml gdb-xml/aarch64-pauth.xml gdb-xml/aarch64-mte.xml gdb-xml/aarch64-sme2.xml
+TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.xml aarch64-mte.xml aarch64-sme2.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/aarch64-linux-user.mak b/configs/targets/aarch64-linux-user.mak
index bf328b3b80c..ddfacc092dd 100644
--- a/configs/targets/aarch64-linux-user.mak
+++ b/configs/targets/aarch64-linux-user.mak
@@ -1,6 +1,6 @@
TARGET_ARCH=aarch64
TARGET_BASE_ARCH=arm
-TARGET_XML_FILES= gdb-xml/aarch64-core.xml gdb-xml/aarch64-fpu.xml gdb-xml/aarch64-pauth.xml gdb-xml/aarch64-mte.xml gdb-xml/aarch64-sme2.xml
+TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.xml aarch64-mte.xml aarch64-sme2.xml
TARGET_HAS_BFLT=y
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
diff --git a/configs/targets/aarch64-softmmu.mak b/configs/targets/aarch64-softmmu.mak
index d14bcfc4900..9a20187e2c1 100644
--- a/configs/targets/aarch64-softmmu.mak
+++ b/configs/targets/aarch64-softmmu.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=aarch64
TARGET_BASE_ARCH=arm
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/aarch64-core.xml gdb-xml/aarch64-fpu.xml gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml gdb-xml/aarch64-pauth.xml gdb-xml/aarch64-sme2.xml
+TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-vfp-sysregs.xml arm-neon.xml arm-m-profile.xml arm-m-profile-mve.xml aarch64-pauth.xml aarch64-sme2.xml
# needed by boot.c
TARGET_NEED_FDT=y
TARGET_LONG_BITS=64
diff --git a/configs/targets/aarch64_be-linux-user.mak b/configs/targets/aarch64_be-linux-user.mak
index 284430add7b..83209fa2ae5 100644
--- a/configs/targets/aarch64_be-linux-user.mak
+++ b/configs/targets/aarch64_be-linux-user.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=aarch64
TARGET_BASE_ARCH=arm
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/aarch64-core.xml gdb-xml/aarch64-fpu.xml gdb-xml/aarch64-pauth.xml gdb-xml/aarch64-mte.xml gdb-xml/aarch64-sme2.xml
+TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.xml aarch64-mte.xml aarch64-sme2.xml
TARGET_HAS_BFLT=y
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
diff --git a/configs/targets/alpha-linux-user.mak b/configs/targets/alpha-linux-user.mak
index 2f1312f0362..fbb9c680915 100644
--- a/configs/targets/alpha-linux-user.mak
+++ b/configs/targets/alpha-linux-user.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=alpha
TARGET_SYSTBL_ABI=common
TARGET_SYSTBL=syscall.tbl
TARGET_LONG_BITS=64
-TARGET_XML_FILES= gdb-xml/alpha-core.xml
+TARGET_XML_FILES= alpha-core.xml
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/configs/targets/alpha-softmmu.mak b/configs/targets/alpha-softmmu.mak
index 5c6af0eafc1..fb412d1b53f 100644
--- a/configs/targets/alpha-softmmu.mak
+++ b/configs/targets/alpha-softmmu.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=alpha
TARGET_LONG_BITS=64
-TARGET_XML_FILES= gdb-xml/alpha-core.xml
+TARGET_XML_FILES= alpha-core.xml
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/configs/targets/arm-bsd-user.mak b/configs/targets/arm-bsd-user.mak
index 472a4f9fb11..b520819e776 100644
--- a/configs/targets/arm-bsd-user.mak
+++ b/configs/targets/arm-bsd-user.mak
@@ -1,3 +1,3 @@
TARGET_ARCH=arm
-TARGET_XML_FILES= gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml
+TARGET_XML_FILES= arm-core.xml arm-vfp.xml arm-vfp3.xml arm-vfp-sysregs.xml arm-neon.xml arm-m-profile.xml arm-m-profile-mve.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/arm-linux-user.mak b/configs/targets/arm-linux-user.mak
index bf35ded7fea..3793782d067 100644
--- a/configs/targets/arm-linux-user.mak
+++ b/configs/targets/arm-linux-user.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=arm
TARGET_SYSTBL_ABI=common,oabi
TARGET_SYSTBL=syscall.tbl
-TARGET_XML_FILES= gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml
+TARGET_XML_FILES= arm-core.xml arm-vfp.xml arm-vfp3.xml arm-vfp-sysregs.xml arm-neon.xml arm-m-profile.xml arm-m-profile-mve.xml
TARGET_HAS_BFLT=y
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
diff --git a/configs/targets/arm-softmmu.mak b/configs/targets/arm-softmmu.mak
index 6a5a8eda949..35af7da79f2 100644
--- a/configs/targets/arm-softmmu.mak
+++ b/configs/targets/arm-softmmu.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=arm
-TARGET_XML_FILES= gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml
+TARGET_XML_FILES= arm-core.xml arm-vfp.xml arm-vfp3.xml arm-vfp-sysregs.xml arm-neon.xml arm-m-profile.xml arm-m-profile-mve.xml
# needed by boot.c
TARGET_NEED_FDT=y
TARGET_LONG_BITS=32
diff --git a/configs/targets/armeb-linux-user.mak b/configs/targets/armeb-linux-user.mak
index 35fa4d91b3c..536bc95af71 100644
--- a/configs/targets/armeb-linux-user.mak
+++ b/configs/targets/armeb-linux-user.mak
@@ -2,7 +2,7 @@ TARGET_ARCH=arm
TARGET_SYSTBL_ABI=common,oabi
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml
+TARGET_XML_FILES= arm-core.xml arm-vfp.xml arm-vfp3.xml arm-vfp-sysregs.xml arm-neon.xml arm-m-profile.xml arm-m-profile-mve.xml
TARGET_HAS_BFLT=y
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
diff --git a/configs/targets/avr-softmmu.mak b/configs/targets/avr-softmmu.mak
index baf20fb7f2f..0a00f128749 100644
--- a/configs/targets/avr-softmmu.mak
+++ b/configs/targets/avr-softmmu.mak
@@ -1,4 +1,4 @@
TARGET_ARCH=avr
-TARGET_XML_FILES= gdb-xml/avr-cpu.xml
+TARGET_XML_FILES= avr-cpu.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/configs/targets/hexagon-linux-user.mak b/configs/targets/hexagon-linux-user.mak
index 6763e2111d5..51fde5d60e6 100644
--- a/configs/targets/hexagon-linux-user.mak
+++ b/configs/targets/hexagon-linux-user.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=hexagon
-TARGET_XML_FILES=gdb-xml/hexagon-core.xml gdb-xml/hexagon-hvx.xml
+TARGET_XML_FILES=hexagon-core.xml hexagon-hvx.xml
TARGET_SYSTBL=syscall.tbl
TARGET_SYSTBL_ABI=common,32,hexagon,time32,stat64,rlimit,renameat
TARGET_LONG_BITS=32
diff --git a/configs/targets/i386-bsd-user.mak b/configs/targets/i386-bsd-user.mak
index 70e098da491..485f571cb6c 100644
--- a/configs/targets/i386-bsd-user.mak
+++ b/configs/targets/i386-bsd-user.mak
@@ -1,3 +1,3 @@
TARGET_ARCH=i386
-TARGET_XML_FILES= gdb-xml/i386-32bit.xml
+TARGET_XML_FILES= i386-32bit.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/i386-linux-user.mak b/configs/targets/i386-linux-user.mak
index ea68a266fce..a3ea4c39c52 100644
--- a/configs/targets/i386-linux-user.mak
+++ b/configs/targets/i386-linux-user.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=i386
TARGET_SYSTBL_ABI=i386
TARGET_SYSTBL=syscall_32.tbl
-TARGET_XML_FILES= gdb-xml/i386-32bit.xml gdb-xml/i386-32bit-linux.xml
+TARGET_XML_FILES= i386-32bit.xml i386-32bit-linux.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/i386-softmmu.mak b/configs/targets/i386-softmmu.mak
index 19ef4a6690d..38a8f85201f 100644
--- a/configs/targets/i386-softmmu.mak
+++ b/configs/targets/i386-softmmu.mak
@@ -1,6 +1,6 @@
TARGET_ARCH=i386
TARGET_KVM_HAVE_GUEST_DEBUG=y
TARGET_KVM_HAVE_RESET_PARKED_VCPU=y
-TARGET_XML_FILES= gdb-xml/i386-32bit.xml
+TARGET_XML_FILES= i386-32bit.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/configs/targets/loongarch64-linux-user.mak b/configs/targets/loongarch64-linux-user.mak
index 4ea12794705..63b0bfc07b8 100644
--- a/configs/targets/loongarch64-linux-user.mak
+++ b/configs/targets/loongarch64-linux-user.mak
@@ -1,7 +1,7 @@
# Default configuration for loongarch64-linux-user
TARGET_ARCH=loongarch64
TARGET_BASE_ARCH=loongarch
-TARGET_XML_FILES=gdb-xml/loongarch-base64.xml gdb-xml/loongarch-fpu.xml gdb-xml/loongarch-lsx.xml gdb-xml/loongarch-lasx.xml
+TARGET_XML_FILES=loongarch-base64.xml loongarch-fpu.xml loongarch-lsx.xml loongarch-lasx.xml
TARGET_SYSTBL=syscall.tbl
TARGET_SYSTBL_ABI=common,64
TARGET_LONG_BITS=64
diff --git a/configs/targets/loongarch64-softmmu.mak b/configs/targets/loongarch64-softmmu.mak
index 38c0f68ddbc..476407f9413 100644
--- a/configs/targets/loongarch64-softmmu.mak
+++ b/configs/targets/loongarch64-softmmu.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=loongarch64
TARGET_BASE_ARCH=loongarch
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/loongarch-base32.xml gdb-xml/loongarch-base64.xml gdb-xml/loongarch-fpu.xml gdb-xml/loongarch-lsx.xml gdb-xml/loongarch-lasx.xml
+TARGET_XML_FILES= loongarch-base32.xml loongarch-base64.xml loongarch-fpu.xml loongarch-lsx.xml loongarch-lasx.xml
# all boards require libfdt
TARGET_NEED_FDT=y
TARGET_LONG_BITS=64
diff --git a/configs/targets/m68k-linux-user.mak b/configs/targets/m68k-linux-user.mak
index 2d9bae22707..b64f33e759a 100644
--- a/configs/targets/m68k-linux-user.mak
+++ b/configs/targets/m68k-linux-user.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=m68k
TARGET_SYSTBL_ABI=common
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/cf-core.xml gdb-xml/cf-fp.xml gdb-xml/m68k-core.xml gdb-xml/m68k-fp.xml
+TARGET_XML_FILES= cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml
TARGET_HAS_BFLT=y
TARGET_LONG_BITS=32
diff --git a/configs/targets/m68k-softmmu.mak b/configs/targets/m68k-softmmu.mak
index bacc52e96a9..0bc889f326e 100644
--- a/configs/targets/m68k-softmmu.mak
+++ b/configs/targets/m68k-softmmu.mak
@@ -1,4 +1,4 @@
TARGET_ARCH=m68k
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/cf-core.xml gdb-xml/cf-fp.xml gdb-xml/m68k-core.xml gdb-xml/m68k-fp.xml
+TARGET_XML_FILES= cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/microblaze-linux-user.mak b/configs/targets/microblaze-linux-user.mak
index 37727797695..31150f980c8 100644
--- a/configs/targets/microblaze-linux-user.mak
+++ b/configs/targets/microblaze-linux-user.mak
@@ -3,5 +3,5 @@ TARGET_SYSTBL_ABI=common
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
TARGET_HAS_BFLT=y
-TARGET_XML_FILES=gdb-xml/microblaze-core.xml gdb-xml/microblaze-stack-protect.xml
+TARGET_XML_FILES=microblaze-core.xml microblaze-stack-protect.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/microblaze-softmmu.mak b/configs/targets/microblaze-softmmu.mak
index cf635798c90..f2b6ab93fbe 100644
--- a/configs/targets/microblaze-softmmu.mak
+++ b/configs/targets/microblaze-softmmu.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=microblaze
TARGET_BIG_ENDIAN=y
# needed by boot.c
TARGET_NEED_FDT=y
-TARGET_XML_FILES=gdb-xml/microblaze-core.xml gdb-xml/microblaze-stack-protect.xml
+TARGET_XML_FILES=microblaze-core.xml microblaze-stack-protect.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/configs/targets/microblazeel-linux-user.mak b/configs/targets/microblazeel-linux-user.mak
index a51a05488d3..5dcd4b5b183 100644
--- a/configs/targets/microblazeel-linux-user.mak
+++ b/configs/targets/microblazeel-linux-user.mak
@@ -2,5 +2,5 @@ TARGET_ARCH=microblaze
TARGET_SYSTBL_ABI=common
TARGET_SYSTBL=syscall.tbl
TARGET_HAS_BFLT=y
-TARGET_XML_FILES=gdb-xml/microblaze-core.xml gdb-xml/microblaze-stack-protect.xml
+TARGET_XML_FILES=microblaze-core.xml microblaze-stack-protect.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/or1k-linux-user.mak b/configs/targets/or1k-linux-user.mak
index 9f8c178ef10..ecb95253680 100644
--- a/configs/targets/or1k-linux-user.mak
+++ b/configs/targets/or1k-linux-user.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=or1k
TARGET_BIG_ENDIAN=y
TARGET_SYSTBL_ABI=common,32,or1k,time32,stat64,rlimit,renameat
TARGET_SYSTBL=syscall.tbl
-TARGET_XML_FILES= gdb-xml/or1k-core.xml
+TARGET_XML_FILES= or1k-core.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/or1k-softmmu.mak b/configs/targets/or1k-softmmu.mak
index 24d89bc3e65..c3ca0a2c6ba 100644
--- a/configs/targets/or1k-softmmu.mak
+++ b/configs/targets/or1k-softmmu.mak
@@ -2,7 +2,7 @@ TARGET_ARCH=or1k
TARGET_BIG_ENDIAN=y
# needed by boot.c and all boards
TARGET_NEED_FDT=y
-TARGET_XML_FILES= gdb-xml/or1k-core.xml
+TARGET_XML_FILES= or1k-core.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/ppc-linux-user.mak b/configs/targets/ppc-linux-user.mak
index 970d04a5ba1..5ddec598760 100644
--- a/configs/targets/ppc-linux-user.mak
+++ b/configs/targets/ppc-linux-user.mak
@@ -2,5 +2,5 @@ TARGET_ARCH=ppc
TARGET_SYSTBL_ABI=common,nospu,32
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/power-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml
+TARGET_XML_FILES= power-core.xml power-fpu.xml power-altivec.xml power-spe.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/ppc-softmmu.mak b/configs/targets/ppc-softmmu.mak
index 9bfa7df6c36..867898bd47c 100644
--- a/configs/targets/ppc-softmmu.mak
+++ b/configs/targets/ppc-softmmu.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=ppc
TARGET_BIG_ENDIAN=y
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/power-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml
+TARGET_XML_FILES= power-core.xml power-fpu.xml power-altivec.xml power-spe.xml
TARGET_LONG_BITS=32
diff --git a/configs/targets/ppc64-linux-user.mak b/configs/targets/ppc64-linux-user.mak
index 461f1c67d15..fcedce1b4e0 100644
--- a/configs/targets/ppc64-linux-user.mak
+++ b/configs/targets/ppc64-linux-user.mak
@@ -4,5 +4,5 @@ TARGET_ABI_DIR=ppc
TARGET_SYSTBL_ABI=common,nospu,64
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/power64-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml gdb-xml/power-vsx.xml
+TARGET_XML_FILES= power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/ppc64-softmmu.mak b/configs/targets/ppc64-softmmu.mak
index 74572864b36..10d7a2681e7 100644
--- a/configs/targets/ppc64-softmmu.mak
+++ b/configs/targets/ppc64-softmmu.mak
@@ -2,7 +2,7 @@ TARGET_ARCH=ppc64
TARGET_BASE_ARCH=ppc
TARGET_BIG_ENDIAN=y
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/power64-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml gdb-xml/power-vsx.xml
+TARGET_XML_FILES= power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml
# all boards require libfdt
TARGET_NEED_FDT=y
TARGET_LONG_BITS=64
diff --git a/configs/targets/ppc64le-linux-user.mak b/configs/targets/ppc64le-linux-user.mak
index cf9d8a400d9..b5a81b58868 100644
--- a/configs/targets/ppc64le-linux-user.mak
+++ b/configs/targets/ppc64le-linux-user.mak
@@ -3,5 +3,5 @@ TARGET_BASE_ARCH=ppc
TARGET_ABI_DIR=ppc
TARGET_SYSTBL_ABI=common,nospu,64
TARGET_SYSTBL=syscall.tbl
-TARGET_XML_FILES= gdb-xml/power64-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml gdb-xml/power-vsx.xml
+TARGET_XML_FILES= power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/riscv32-linux-user.mak b/configs/targets/riscv32-linux-user.mak
index a0ef03c0c3f..f069ab9a0f9 100644
--- a/configs/targets/riscv32-linux-user.mak
+++ b/configs/targets/riscv32-linux-user.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=riscv32
TARGET_BASE_ARCH=riscv
TARGET_ABI_DIR=riscv
-TARGET_XML_FILES= gdb-xml/riscv-32bit-cpu.xml gdb-xml/riscv-32bit-fpu.xml gdb-xml/riscv-64bit-fpu.xml gdb-xml/riscv-32bit-virtual.xml
+TARGET_XML_FILES= riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-virtual.xml
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
TARGET_SYSTBL_ABI=32
diff --git a/configs/targets/riscv32-softmmu.mak b/configs/targets/riscv32-softmmu.mak
index 7476e596082..26080599be7 100644
--- a/configs/targets/riscv32-softmmu.mak
+++ b/configs/targets/riscv32-softmmu.mak
@@ -1,6 +1,6 @@
TARGET_ARCH=riscv32
TARGET_BASE_ARCH=riscv
-TARGET_XML_FILES= gdb-xml/riscv-32bit-cpu.xml gdb-xml/riscv-32bit-fpu.xml gdb-xml/riscv-64bit-fpu.xml gdb-xml/riscv-32bit-virtual.xml
+TARGET_XML_FILES= riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-virtual.xml
# needed by boot.c
TARGET_NEED_FDT=y
TARGET_LONG_BITS=32
diff --git a/configs/targets/riscv64-bsd-user.mak b/configs/targets/riscv64-bsd-user.mak
index c6348a79629..bc85d9ed04e 100644
--- a/configs/targets/riscv64-bsd-user.mak
+++ b/configs/targets/riscv64-bsd-user.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=riscv64
TARGET_BASE_ARCH=riscv
TARGET_ABI_DIR=riscv
-TARGET_XML_FILES= gdb-xml/riscv-64bit-cpu.xml gdb-xml/riscv-32bit-fpu.xml gdb-xml/riscv-64bit-fpu.xml gdb-xml/riscv-64bit-virtual.xml
+TARGET_XML_FILES= riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-virtual.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/riscv64-linux-user.mak b/configs/targets/riscv64-linux-user.mak
index aac7568305d..bca08645124 100644
--- a/configs/targets/riscv64-linux-user.mak
+++ b/configs/targets/riscv64-linux-user.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=riscv64
TARGET_BASE_ARCH=riscv
TARGET_ABI_DIR=riscv
-TARGET_XML_FILES= gdb-xml/riscv-64bit-cpu.xml gdb-xml/riscv-32bit-fpu.xml gdb-xml/riscv-64bit-fpu.xml gdb-xml/riscv-64bit-virtual.xml
+TARGET_XML_FILES= riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-virtual.xml
CONFIG_SEMIHOSTING=y
CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y
TARGET_SYSTBL_ABI=64
diff --git a/configs/targets/riscv64-softmmu.mak b/configs/targets/riscv64-softmmu.mak
index f836f08c5b9..5059c550480 100644
--- a/configs/targets/riscv64-softmmu.mak
+++ b/configs/targets/riscv64-softmmu.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=riscv64
TARGET_BASE_ARCH=riscv
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/riscv-64bit-cpu.xml gdb-xml/riscv-32bit-fpu.xml gdb-xml/riscv-64bit-fpu.xml gdb-xml/riscv-64bit-virtual.xml gdb-xml/riscv-32bit-cpu.xml gdb-xml/riscv-32bit-virtual.xml
+TARGET_XML_FILES= riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-virtual.xml riscv-32bit-cpu.xml riscv-32bit-virtual.xml
# needed by boot.c
TARGET_NEED_FDT=y
TARGET_LONG_BITS=64
diff --git a/configs/targets/rx-softmmu.mak b/configs/targets/rx-softmmu.mak
index 281a165873a..1959d1b4ccc 100644
--- a/configs/targets/rx-softmmu.mak
+++ b/configs/targets/rx-softmmu.mak
@@ -1,5 +1,5 @@
TARGET_ARCH=rx
-TARGET_XML_FILES= gdb-xml/rx-core.xml
+TARGET_XML_FILES= rx-core.xml
# all boards require libfdt
TARGET_NEED_FDT=y
TARGET_LONG_BITS=32
diff --git a/configs/targets/s390x-linux-user.mak b/configs/targets/s390x-linux-user.mak
index e3723f5dc54..2dbcae0a6e2 100644
--- a/configs/targets/s390x-linux-user.mak
+++ b/configs/targets/s390x-linux-user.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=s390x
TARGET_SYSTBL_ABI=common,64
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES= gdb-xml/s390x-core64.xml gdb-xml/s390-acr.xml gdb-xml/s390-fpr.xml gdb-xml/s390-vx.xml gdb-xml/s390-cr.xml gdb-xml/s390-virt.xml gdb-xml/s390-virt-kvm.xml gdb-xml/s390-gs.xml
+TARGET_XML_FILES= s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-virt-kvm.xml s390-gs.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/s390x-softmmu.mak b/configs/targets/s390x-softmmu.mak
index 544657cfe2d..e273075f1a9 100644
--- a/configs/targets/s390x-softmmu.mak
+++ b/configs/targets/s390x-softmmu.mak
@@ -1,6 +1,6 @@
TARGET_ARCH=s390x
TARGET_BIG_ENDIAN=y
TARGET_KVM_HAVE_GUEST_DEBUG=y
-TARGET_XML_FILES= gdb-xml/s390x-core64.xml gdb-xml/s390-acr.xml gdb-xml/s390-fpr.xml gdb-xml/s390-vx.xml gdb-xml/s390-cr.xml gdb-xml/s390-virt.xml gdb-xml/s390-virt-kvm.xml gdb-xml/s390-gs.xml
+TARGET_XML_FILES= s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-virt-kvm.xml s390-gs.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/sparc-linux-user.mak b/configs/targets/sparc-linux-user.mak
index 01446e28783..2b6f8077399 100644
--- a/configs/targets/sparc-linux-user.mak
+++ b/configs/targets/sparc-linux-user.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=sparc
TARGET_SYSTBL_ABI=common,32
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES=gdb-xml/sparc32-cpu.xml gdb-xml/sparc32-fpu.xml gdb-xml/sparc32-cp0.xml
+TARGET_XML_FILES=sparc32-cpu.xml sparc32-fpu.xml sparc32-cp0.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/sparc-softmmu.mak b/configs/targets/sparc-softmmu.mak
index ed846735f41..126ce12abb0 100644
--- a/configs/targets/sparc-softmmu.mak
+++ b/configs/targets/sparc-softmmu.mak
@@ -1,6 +1,6 @@
TARGET_ARCH=sparc
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES=gdb-xml/sparc32-cpu.xml gdb-xml/sparc32-fpu.xml gdb-xml/sparc32-cp0.xml
+TARGET_XML_FILES=sparc32-cpu.xml sparc32-fpu.xml sparc32-cp0.xml
TARGET_LONG_BITS=32
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/sparc32plus-linux-user.mak b/configs/targets/sparc32plus-linux-user.mak
index cf49c53ce44..a1d8530ecfd 100644
--- a/configs/targets/sparc32plus-linux-user.mak
+++ b/configs/targets/sparc32plus-linux-user.mak
@@ -5,6 +5,6 @@ TARGET_ABI_DIR=sparc
TARGET_SYSTBL_ABI=common,32
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES=gdb-xml/sparc64-cpu.xml gdb-xml/sparc64-fpu.xml gdb-xml/sparc64-cp0.xml
+TARGET_XML_FILES=sparc64-cpu.xml sparc64-fpu.xml sparc64-cp0.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/sparc64-linux-user.mak b/configs/targets/sparc64-linux-user.mak
index 81d18fcc85b..c48a03aeb9e 100644
--- a/configs/targets/sparc64-linux-user.mak
+++ b/configs/targets/sparc64-linux-user.mak
@@ -4,6 +4,6 @@ TARGET_ABI_DIR=sparc
TARGET_SYSTBL_ABI=common,64
TARGET_SYSTBL=syscall.tbl
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES=gdb-xml/sparc64-cpu.xml gdb-xml/sparc64-fpu.xml gdb-xml/sparc64-cp0.xml
+TARGET_XML_FILES=sparc64-cpu.xml sparc64-fpu.xml sparc64-cp0.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/sparc64-softmmu.mak b/configs/targets/sparc64-softmmu.mak
index 602783ef0f6..4e621fb8e39 100644
--- a/configs/targets/sparc64-softmmu.mak
+++ b/configs/targets/sparc64-softmmu.mak
@@ -1,7 +1,7 @@
TARGET_ARCH=sparc64
TARGET_BASE_ARCH=sparc
TARGET_BIG_ENDIAN=y
-TARGET_XML_FILES=gdb-xml/sparc64-cpu.xml gdb-xml/sparc64-fpu.xml gdb-xml/sparc64-cp0.xml
+TARGET_XML_FILES=sparc64-cpu.xml sparc64-fpu.xml sparc64-cp0.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=y
diff --git a/configs/targets/x86_64-bsd-user.mak b/configs/targets/x86_64-bsd-user.mak
index d62d656f2c6..d754186347f 100644
--- a/configs/targets/x86_64-bsd-user.mak
+++ b/configs/targets/x86_64-bsd-user.mak
@@ -1,4 +1,4 @@
TARGET_ARCH=x86_64
TARGET_BASE_ARCH=i386
-TARGET_XML_FILES= gdb-xml/i386-64bit.xml
+TARGET_XML_FILES= i386-64bit.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/x86_64-linux-user.mak b/configs/targets/x86_64-linux-user.mak
index b093ab5a167..7f9527fd1de 100644
--- a/configs/targets/x86_64-linux-user.mak
+++ b/configs/targets/x86_64-linux-user.mak
@@ -2,5 +2,5 @@ TARGET_ARCH=x86_64
TARGET_BASE_ARCH=i386
TARGET_SYSTBL_ABI=common,64
TARGET_SYSTBL=syscall_64.tbl
-TARGET_XML_FILES= gdb-xml/i386-64bit.xml gdb-xml/i386-64bit-linux.xml
+TARGET_XML_FILES= i386-64bit.xml i386-64bit-linux.xml
TARGET_LONG_BITS=64
diff --git a/configs/targets/x86_64-softmmu.mak b/configs/targets/x86_64-softmmu.mak
index 151862158c7..c7f8746b4f5 100644
--- a/configs/targets/x86_64-softmmu.mak
+++ b/configs/targets/x86_64-softmmu.mak
@@ -2,6 +2,6 @@ TARGET_ARCH=x86_64
TARGET_BASE_ARCH=i386
TARGET_KVM_HAVE_GUEST_DEBUG=y
TARGET_KVM_HAVE_RESET_PARKED_VCPU=y
-TARGET_XML_FILES= gdb-xml/i386-64bit.xml gdb-xml/i386-64bit-apx.xml
+TARGET_XML_FILES= i386-64bit.xml i386-64bit-apx.xml
TARGET_LONG_BITS=64
TARGET_NOT_USING_LEGACY_LDST_PHYS_API=y
diff --git a/meson.build b/meson.build
index db8918dd303..8e8440941c0 100644
--- a/meson.build
+++ b/meson.build
@@ -4329,9 +4329,13 @@ foreach target : target_dirs
endif
if 'TARGET_XML_FILES' in config_target
+ gdbstub_xml_files = []
+ foreach gdbstub_xml : config_target['TARGET_XML_FILES'].split()
+ gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
+ endforeach
gdbstub_xml = custom_target(target + '-gdbstub-xml.c',
output: target + '-gdbstub-xml.c',
- input: files(config_target['TARGET_XML_FILES'].split()),
+ input: files(gdbstub_xml_files),
command: [feature_to_c, '@INPUT@'],
capture: true)
arch_srcs += gdbstub_xml
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 15/16] gdbstub: Move gdb-xml/ within gdbstub/
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (13 preceding siblings ...)
2026-03-11 1:38 ` [PULL 14/16] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:38 ` [PULL 16/16] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Pierrick Bouvier
` (2 subsequent siblings)
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
gdb-xml/ files are only consumed by gdbstub API.
No need for a top-level entry, move them to gdbstub/.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-16-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
MAINTAINERS | 19 +++++++++----------
docs/devel/codebase.rst | 2 --
meson.build | 2 +-
{gdb-xml => gdbstub/gdb-xml}/aarch64-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-mte.xml | 0
.../gdb-xml}/aarch64-pauth.xml | 0
{gdb-xml => gdbstub/gdb-xml}/aarch64-sme2.xml | 0
{gdb-xml => gdbstub/gdb-xml}/alpha-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-core.xml | 0
.../gdb-xml}/arm-m-profile-mve.xml | 0
.../gdb-xml}/arm-m-profile.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-neon.xml | 0
.../gdb-xml}/arm-vfp-sysregs.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-vfp.xml | 0
{gdb-xml => gdbstub/gdb-xml}/arm-vfp3.xml | 0
{gdb-xml => gdbstub/gdb-xml}/avr-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/cf-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/cf-fp.xml | 0
{gdb-xml => gdbstub/gdb-xml}/hexagon-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/hexagon-hvx.xml | 0
.../gdb-xml}/i386-32bit-linux.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-32bit.xml | 0
.../gdb-xml}/i386-64bit-apx.xml | 0
.../gdb-xml}/i386-64bit-linux.xml | 0
{gdb-xml => gdbstub/gdb-xml}/i386-64bit.xml | 0
.../gdb-xml}/loongarch-base32.xml | 0
.../gdb-xml}/loongarch-base64.xml | 0
.../gdb-xml}/loongarch-fpu.xml | 0
.../gdb-xml}/loongarch-lasx.xml | 0
.../gdb-xml}/loongarch-lsx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/m68k-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/m68k-fp.xml | 0
.../gdb-xml}/microblaze-core.xml | 0
.../gdb-xml}/microblaze-stack-protect.xml | 0
{gdb-xml => gdbstub/gdb-xml}/or1k-core.xml | 0
.../gdb-xml}/power-altivec.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-spe.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power-vsx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/power64-core.xml | 0
.../gdb-xml}/riscv-32bit-cpu.xml | 0
.../gdb-xml}/riscv-32bit-fpu.xml | 0
.../gdb-xml}/riscv-32bit-virtual.xml | 0
.../gdb-xml}/riscv-64bit-cpu.xml | 0
.../gdb-xml}/riscv-64bit-fpu.xml | 0
.../gdb-xml}/riscv-64bit-virtual.xml | 0
{gdb-xml => gdbstub/gdb-xml}/rx-core.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-acr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-cr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-fpr.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-gs.xml | 0
.../gdb-xml}/s390-virt-kvm.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-virt.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390-vx.xml | 0
{gdb-xml => gdbstub/gdb-xml}/s390x-core64.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-cp0.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc32-fpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-cp0.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-cpu.xml | 0
{gdb-xml => gdbstub/gdb-xml}/sparc64-fpu.xml | 0
63 files changed, 10 insertions(+), 13 deletions(-)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-mte.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-pauth.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/aarch64-sme2.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/alpha-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-m-profile-mve.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-m-profile.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-neon.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp-sysregs.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/arm-vfp3.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/avr-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/cf-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/cf-fp.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/hexagon-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/hexagon-hvx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-32bit-linux.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-32bit.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit-apx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit-linux.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/i386-64bit.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-base32.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-base64.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-lasx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/loongarch-lsx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/m68k-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/m68k-fp.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/microblaze-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/microblaze-stack-protect.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/or1k-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-altivec.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-spe.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power-vsx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/power64-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-32bit-virtual.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/riscv-64bit-virtual.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/rx-core.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-acr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-cr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-fpr.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-gs.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-virt-kvm.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-virt.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390-vx.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/s390x-core64.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-cp0.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc32-fpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-cp0.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-cpu.xml (100%)
rename {gdb-xml => gdbstub/gdb-xml}/sparc64-fpu.xml (100%)
diff --git a/MAINTAINERS b/MAINTAINERS
index 9d1614fd7e9..247799c817c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -106,7 +106,7 @@ M: Thomas Huth <thuth@redhat.com>
S: Supported
F: configs/devices/s390x-softmmu/default.mak
F: configs/targets/s390x-softmmu.mak
-F: gdb-xml/s390*.xml
+F: gdbstub/gdb-xml/s390*.xml
F: hw/char/sclp*.[hc]
F: hw/char/terminal3270.c
F: hw/intc/s390_flic.c
@@ -221,8 +221,8 @@ F: include/hw/cpu/a*mpcore.h
F: docs/system/target-arm.rst
F: docs/system/arm/cpu-features.rst
F: docs/system/arm/emulation.rst
-F: gdb-xml/arm*.xml
-F: gdb-xml/aarch64*.xml
+F: gdbstub/gdb-xml/arm*.xml
+F: gdbstub/gdb-xml/aarch64*.xml
ARM SMMU
M: Eric Auger <eric.auger@redhat.com>
@@ -237,7 +237,7 @@ AVR TCG CPUs
M: Michael Rolnik <mrolnik@gmail.com>
S: Maintained
F: docs/system/target-avr.rst
-F: gdb-xml/avr-cpu.xml
+F: gdbstub/gdb-xml/avr-cpu.xml
F: target/avr/
F: tests/functional/avr/
@@ -252,7 +252,7 @@ F: tests/tcg/hexagon/
F: disas/hexagon.c
F: configs/targets/hexagon-linux-user/default.mak
F: docker/dockerfiles/debian-hexagon-cross.docker
-F: gdb-xml/hexagon*.xml
+F: gdbstub/gdb-xml/hexagon*.xml
T: git https://github.com/quic/qemu.git hex-next
Hexagon idef-parser
@@ -311,7 +311,7 @@ M: Stafford Horne <shorne@gmail.com>
S: Odd Fixes
F: docs/system/or1k/cpu-features.rst
F: target/or1k/
-F: gdb-xml/or1k-core.xml
+F: gdbstub/gdb-xml/or1k-core.xml
F: hw/or1k/
F: include/hw/or1k/
F: tests/functional/or1k/meson.build
@@ -411,7 +411,7 @@ M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
M: Artyom Tarasenko <atar4qemu@gmail.com>
S: Maintained
F: target/sparc/
-F: gdb-xml/sparc*.xml
+F: gdbstub/gdb-xml/sparc*.xml
F: hw/sparc/
F: hw/sparc64/
F: include/hw/sparc/sparc64.h
@@ -499,7 +499,7 @@ S: Supported
F: target/s390x/kvm/
F: target/s390x/machine.c
F: target/s390x/sigp.c
-F: gdb-xml/s390*.xml
+F: gdbstub/gdb-xml/s390*.xml
T: git https://github.com/borntraeger/qemu.git s390-next
L: qemu-s390x@nongnu.org
@@ -1352,7 +1352,7 @@ F: include/hw/intc/loongson_ipi_common.h
F: hw/intc/loongarch_*.c
F: hw/intc/loongson_ipi_common.c
F: hw/rtc/ls7a_rtc.c
-F: gdb-xml/loongarch*.xml
+F: gdbstub/gdb-xml/loongarch*.xml
M68K Machines
-------------
@@ -3311,7 +3311,6 @@ F: docs/system/gdb.rst
F: gdbstub/*
F: include/exec/gdbstub.h
F: include/gdbstub/*
-F: gdb-xml/
F: tests/tcg/multiarch/gdbstub/*
F: scripts/feature_to_c.py
F: scripts/probe-gdb-support.py
diff --git a/docs/devel/codebase.rst b/docs/devel/codebase.rst
index 69d88271178..f09307b8971 100644
--- a/docs/devel/codebase.rst
+++ b/docs/devel/codebase.rst
@@ -88,8 +88,6 @@ yet, so sometimes the source code is all you have.
`VirtFS <https://www.linux-kvm.org/page/VirtFS>`_ support.
* `gdbstub <https://gitlab.com/qemu-project/qemu/-/tree/master/gdbstub>`_:
`GDB <GDB usage>` support.
-* `gdb-xml <https://gitlab.com/qemu-project/qemu/-/tree/master/gdb-xml>`_:
- Set of XML files describing architectures and used by `gdbstub <GDB usage>`.
* `host <https://gitlab.com/qemu-project/qemu/-/tree/master/host>`_:
Various architecture specific header files (crypto, atomic, memory
operations).
diff --git a/meson.build b/meson.build
index 8e8440941c0..503cde5ea90 100644
--- a/meson.build
+++ b/meson.build
@@ -4331,7 +4331,7 @@ foreach target : target_dirs
if 'TARGET_XML_FILES' in config_target
gdbstub_xml_files = []
foreach gdbstub_xml : config_target['TARGET_XML_FILES'].split()
- gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
+ gdbstub_xml_files += 'gdbstub/gdb-xml/' + gdbstub_xml
endforeach
gdbstub_xml = custom_target(target + '-gdbstub-xml.c',
output: target + '-gdbstub-xml.c',
diff --git a/gdb-xml/aarch64-core.xml b/gdbstub/gdb-xml/aarch64-core.xml
similarity index 100%
rename from gdb-xml/aarch64-core.xml
rename to gdbstub/gdb-xml/aarch64-core.xml
diff --git a/gdb-xml/aarch64-fpu.xml b/gdbstub/gdb-xml/aarch64-fpu.xml
similarity index 100%
rename from gdb-xml/aarch64-fpu.xml
rename to gdbstub/gdb-xml/aarch64-fpu.xml
diff --git a/gdb-xml/aarch64-mte.xml b/gdbstub/gdb-xml/aarch64-mte.xml
similarity index 100%
rename from gdb-xml/aarch64-mte.xml
rename to gdbstub/gdb-xml/aarch64-mte.xml
diff --git a/gdb-xml/aarch64-pauth.xml b/gdbstub/gdb-xml/aarch64-pauth.xml
similarity index 100%
rename from gdb-xml/aarch64-pauth.xml
rename to gdbstub/gdb-xml/aarch64-pauth.xml
diff --git a/gdb-xml/aarch64-sme2.xml b/gdbstub/gdb-xml/aarch64-sme2.xml
similarity index 100%
rename from gdb-xml/aarch64-sme2.xml
rename to gdbstub/gdb-xml/aarch64-sme2.xml
diff --git a/gdb-xml/alpha-core.xml b/gdbstub/gdb-xml/alpha-core.xml
similarity index 100%
rename from gdb-xml/alpha-core.xml
rename to gdbstub/gdb-xml/alpha-core.xml
diff --git a/gdb-xml/arm-core.xml b/gdbstub/gdb-xml/arm-core.xml
similarity index 100%
rename from gdb-xml/arm-core.xml
rename to gdbstub/gdb-xml/arm-core.xml
diff --git a/gdb-xml/arm-m-profile-mve.xml b/gdbstub/gdb-xml/arm-m-profile-mve.xml
similarity index 100%
rename from gdb-xml/arm-m-profile-mve.xml
rename to gdbstub/gdb-xml/arm-m-profile-mve.xml
diff --git a/gdb-xml/arm-m-profile.xml b/gdbstub/gdb-xml/arm-m-profile.xml
similarity index 100%
rename from gdb-xml/arm-m-profile.xml
rename to gdbstub/gdb-xml/arm-m-profile.xml
diff --git a/gdb-xml/arm-neon.xml b/gdbstub/gdb-xml/arm-neon.xml
similarity index 100%
rename from gdb-xml/arm-neon.xml
rename to gdbstub/gdb-xml/arm-neon.xml
diff --git a/gdb-xml/arm-vfp-sysregs.xml b/gdbstub/gdb-xml/arm-vfp-sysregs.xml
similarity index 100%
rename from gdb-xml/arm-vfp-sysregs.xml
rename to gdbstub/gdb-xml/arm-vfp-sysregs.xml
diff --git a/gdb-xml/arm-vfp.xml b/gdbstub/gdb-xml/arm-vfp.xml
similarity index 100%
rename from gdb-xml/arm-vfp.xml
rename to gdbstub/gdb-xml/arm-vfp.xml
diff --git a/gdb-xml/arm-vfp3.xml b/gdbstub/gdb-xml/arm-vfp3.xml
similarity index 100%
rename from gdb-xml/arm-vfp3.xml
rename to gdbstub/gdb-xml/arm-vfp3.xml
diff --git a/gdb-xml/avr-cpu.xml b/gdbstub/gdb-xml/avr-cpu.xml
similarity index 100%
rename from gdb-xml/avr-cpu.xml
rename to gdbstub/gdb-xml/avr-cpu.xml
diff --git a/gdb-xml/cf-core.xml b/gdbstub/gdb-xml/cf-core.xml
similarity index 100%
rename from gdb-xml/cf-core.xml
rename to gdbstub/gdb-xml/cf-core.xml
diff --git a/gdb-xml/cf-fp.xml b/gdbstub/gdb-xml/cf-fp.xml
similarity index 100%
rename from gdb-xml/cf-fp.xml
rename to gdbstub/gdb-xml/cf-fp.xml
diff --git a/gdb-xml/hexagon-core.xml b/gdbstub/gdb-xml/hexagon-core.xml
similarity index 100%
rename from gdb-xml/hexagon-core.xml
rename to gdbstub/gdb-xml/hexagon-core.xml
diff --git a/gdb-xml/hexagon-hvx.xml b/gdbstub/gdb-xml/hexagon-hvx.xml
similarity index 100%
rename from gdb-xml/hexagon-hvx.xml
rename to gdbstub/gdb-xml/hexagon-hvx.xml
diff --git a/gdb-xml/i386-32bit-linux.xml b/gdbstub/gdb-xml/i386-32bit-linux.xml
similarity index 100%
rename from gdb-xml/i386-32bit-linux.xml
rename to gdbstub/gdb-xml/i386-32bit-linux.xml
diff --git a/gdb-xml/i386-32bit.xml b/gdbstub/gdb-xml/i386-32bit.xml
similarity index 100%
rename from gdb-xml/i386-32bit.xml
rename to gdbstub/gdb-xml/i386-32bit.xml
diff --git a/gdb-xml/i386-64bit-apx.xml b/gdbstub/gdb-xml/i386-64bit-apx.xml
similarity index 100%
rename from gdb-xml/i386-64bit-apx.xml
rename to gdbstub/gdb-xml/i386-64bit-apx.xml
diff --git a/gdb-xml/i386-64bit-linux.xml b/gdbstub/gdb-xml/i386-64bit-linux.xml
similarity index 100%
rename from gdb-xml/i386-64bit-linux.xml
rename to gdbstub/gdb-xml/i386-64bit-linux.xml
diff --git a/gdb-xml/i386-64bit.xml b/gdbstub/gdb-xml/i386-64bit.xml
similarity index 100%
rename from gdb-xml/i386-64bit.xml
rename to gdbstub/gdb-xml/i386-64bit.xml
diff --git a/gdb-xml/loongarch-base32.xml b/gdbstub/gdb-xml/loongarch-base32.xml
similarity index 100%
rename from gdb-xml/loongarch-base32.xml
rename to gdbstub/gdb-xml/loongarch-base32.xml
diff --git a/gdb-xml/loongarch-base64.xml b/gdbstub/gdb-xml/loongarch-base64.xml
similarity index 100%
rename from gdb-xml/loongarch-base64.xml
rename to gdbstub/gdb-xml/loongarch-base64.xml
diff --git a/gdb-xml/loongarch-fpu.xml b/gdbstub/gdb-xml/loongarch-fpu.xml
similarity index 100%
rename from gdb-xml/loongarch-fpu.xml
rename to gdbstub/gdb-xml/loongarch-fpu.xml
diff --git a/gdb-xml/loongarch-lasx.xml b/gdbstub/gdb-xml/loongarch-lasx.xml
similarity index 100%
rename from gdb-xml/loongarch-lasx.xml
rename to gdbstub/gdb-xml/loongarch-lasx.xml
diff --git a/gdb-xml/loongarch-lsx.xml b/gdbstub/gdb-xml/loongarch-lsx.xml
similarity index 100%
rename from gdb-xml/loongarch-lsx.xml
rename to gdbstub/gdb-xml/loongarch-lsx.xml
diff --git a/gdb-xml/m68k-core.xml b/gdbstub/gdb-xml/m68k-core.xml
similarity index 100%
rename from gdb-xml/m68k-core.xml
rename to gdbstub/gdb-xml/m68k-core.xml
diff --git a/gdb-xml/m68k-fp.xml b/gdbstub/gdb-xml/m68k-fp.xml
similarity index 100%
rename from gdb-xml/m68k-fp.xml
rename to gdbstub/gdb-xml/m68k-fp.xml
diff --git a/gdb-xml/microblaze-core.xml b/gdbstub/gdb-xml/microblaze-core.xml
similarity index 100%
rename from gdb-xml/microblaze-core.xml
rename to gdbstub/gdb-xml/microblaze-core.xml
diff --git a/gdb-xml/microblaze-stack-protect.xml b/gdbstub/gdb-xml/microblaze-stack-protect.xml
similarity index 100%
rename from gdb-xml/microblaze-stack-protect.xml
rename to gdbstub/gdb-xml/microblaze-stack-protect.xml
diff --git a/gdb-xml/or1k-core.xml b/gdbstub/gdb-xml/or1k-core.xml
similarity index 100%
rename from gdb-xml/or1k-core.xml
rename to gdbstub/gdb-xml/or1k-core.xml
diff --git a/gdb-xml/power-altivec.xml b/gdbstub/gdb-xml/power-altivec.xml
similarity index 100%
rename from gdb-xml/power-altivec.xml
rename to gdbstub/gdb-xml/power-altivec.xml
diff --git a/gdb-xml/power-core.xml b/gdbstub/gdb-xml/power-core.xml
similarity index 100%
rename from gdb-xml/power-core.xml
rename to gdbstub/gdb-xml/power-core.xml
diff --git a/gdb-xml/power-fpu.xml b/gdbstub/gdb-xml/power-fpu.xml
similarity index 100%
rename from gdb-xml/power-fpu.xml
rename to gdbstub/gdb-xml/power-fpu.xml
diff --git a/gdb-xml/power-spe.xml b/gdbstub/gdb-xml/power-spe.xml
similarity index 100%
rename from gdb-xml/power-spe.xml
rename to gdbstub/gdb-xml/power-spe.xml
diff --git a/gdb-xml/power-vsx.xml b/gdbstub/gdb-xml/power-vsx.xml
similarity index 100%
rename from gdb-xml/power-vsx.xml
rename to gdbstub/gdb-xml/power-vsx.xml
diff --git a/gdb-xml/power64-core.xml b/gdbstub/gdb-xml/power64-core.xml
similarity index 100%
rename from gdb-xml/power64-core.xml
rename to gdbstub/gdb-xml/power64-core.xml
diff --git a/gdb-xml/riscv-32bit-cpu.xml b/gdbstub/gdb-xml/riscv-32bit-cpu.xml
similarity index 100%
rename from gdb-xml/riscv-32bit-cpu.xml
rename to gdbstub/gdb-xml/riscv-32bit-cpu.xml
diff --git a/gdb-xml/riscv-32bit-fpu.xml b/gdbstub/gdb-xml/riscv-32bit-fpu.xml
similarity index 100%
rename from gdb-xml/riscv-32bit-fpu.xml
rename to gdbstub/gdb-xml/riscv-32bit-fpu.xml
diff --git a/gdb-xml/riscv-32bit-virtual.xml b/gdbstub/gdb-xml/riscv-32bit-virtual.xml
similarity index 100%
rename from gdb-xml/riscv-32bit-virtual.xml
rename to gdbstub/gdb-xml/riscv-32bit-virtual.xml
diff --git a/gdb-xml/riscv-64bit-cpu.xml b/gdbstub/gdb-xml/riscv-64bit-cpu.xml
similarity index 100%
rename from gdb-xml/riscv-64bit-cpu.xml
rename to gdbstub/gdb-xml/riscv-64bit-cpu.xml
diff --git a/gdb-xml/riscv-64bit-fpu.xml b/gdbstub/gdb-xml/riscv-64bit-fpu.xml
similarity index 100%
rename from gdb-xml/riscv-64bit-fpu.xml
rename to gdbstub/gdb-xml/riscv-64bit-fpu.xml
diff --git a/gdb-xml/riscv-64bit-virtual.xml b/gdbstub/gdb-xml/riscv-64bit-virtual.xml
similarity index 100%
rename from gdb-xml/riscv-64bit-virtual.xml
rename to gdbstub/gdb-xml/riscv-64bit-virtual.xml
diff --git a/gdb-xml/rx-core.xml b/gdbstub/gdb-xml/rx-core.xml
similarity index 100%
rename from gdb-xml/rx-core.xml
rename to gdbstub/gdb-xml/rx-core.xml
diff --git a/gdb-xml/s390-acr.xml b/gdbstub/gdb-xml/s390-acr.xml
similarity index 100%
rename from gdb-xml/s390-acr.xml
rename to gdbstub/gdb-xml/s390-acr.xml
diff --git a/gdb-xml/s390-cr.xml b/gdbstub/gdb-xml/s390-cr.xml
similarity index 100%
rename from gdb-xml/s390-cr.xml
rename to gdbstub/gdb-xml/s390-cr.xml
diff --git a/gdb-xml/s390-fpr.xml b/gdbstub/gdb-xml/s390-fpr.xml
similarity index 100%
rename from gdb-xml/s390-fpr.xml
rename to gdbstub/gdb-xml/s390-fpr.xml
diff --git a/gdb-xml/s390-gs.xml b/gdbstub/gdb-xml/s390-gs.xml
similarity index 100%
rename from gdb-xml/s390-gs.xml
rename to gdbstub/gdb-xml/s390-gs.xml
diff --git a/gdb-xml/s390-virt-kvm.xml b/gdbstub/gdb-xml/s390-virt-kvm.xml
similarity index 100%
rename from gdb-xml/s390-virt-kvm.xml
rename to gdbstub/gdb-xml/s390-virt-kvm.xml
diff --git a/gdb-xml/s390-virt.xml b/gdbstub/gdb-xml/s390-virt.xml
similarity index 100%
rename from gdb-xml/s390-virt.xml
rename to gdbstub/gdb-xml/s390-virt.xml
diff --git a/gdb-xml/s390-vx.xml b/gdbstub/gdb-xml/s390-vx.xml
similarity index 100%
rename from gdb-xml/s390-vx.xml
rename to gdbstub/gdb-xml/s390-vx.xml
diff --git a/gdb-xml/s390x-core64.xml b/gdbstub/gdb-xml/s390x-core64.xml
similarity index 100%
rename from gdb-xml/s390x-core64.xml
rename to gdbstub/gdb-xml/s390x-core64.xml
diff --git a/gdb-xml/sparc32-cp0.xml b/gdbstub/gdb-xml/sparc32-cp0.xml
similarity index 100%
rename from gdb-xml/sparc32-cp0.xml
rename to gdbstub/gdb-xml/sparc32-cp0.xml
diff --git a/gdb-xml/sparc32-cpu.xml b/gdbstub/gdb-xml/sparc32-cpu.xml
similarity index 100%
rename from gdb-xml/sparc32-cpu.xml
rename to gdbstub/gdb-xml/sparc32-cpu.xml
diff --git a/gdb-xml/sparc32-fpu.xml b/gdbstub/gdb-xml/sparc32-fpu.xml
similarity index 100%
rename from gdb-xml/sparc32-fpu.xml
rename to gdbstub/gdb-xml/sparc32-fpu.xml
diff --git a/gdb-xml/sparc64-cp0.xml b/gdbstub/gdb-xml/sparc64-cp0.xml
similarity index 100%
rename from gdb-xml/sparc64-cp0.xml
rename to gdbstub/gdb-xml/sparc64-cp0.xml
diff --git a/gdb-xml/sparc64-cpu.xml b/gdbstub/gdb-xml/sparc64-cpu.xml
similarity index 100%
rename from gdb-xml/sparc64-cpu.xml
rename to gdbstub/gdb-xml/sparc64-cpu.xml
diff --git a/gdb-xml/sparc64-fpu.xml b/gdbstub/gdb-xml/sparc64-fpu.xml
similarity index 100%
rename from gdb-xml/sparc64-fpu.xml
rename to gdbstub/gdb-xml/sparc64-fpu.xml
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PULL 16/16] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (14 preceding siblings ...)
2026-03-11 1:38 ` [PULL 15/16] gdbstub: Move gdb-xml/ within gdbstub/ Pierrick Bouvier
@ 2026-03-11 1:38 ` Pierrick Bouvier
2026-03-11 1:41 ` [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
2026-03-12 9:47 ` Peter Maydell
17 siblings, 0 replies; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:38 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha
Cc: pierrick.bouvier
From: Philippe Mathieu-Daudé <philmd@linaro.org>
gdb_static_features[] does not depend on target-specific code.
Instead of generating one file per target, generate a single file
with a single gdb_static_features[] array.
Co-developed-by: Chao Liu <chao.liu.zevorn@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-17-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
meson.build | 14 --------------
stubs/gdbstub.c => gdbstub/gdb-xml-stub.c | 0
gdbstub/meson.build | 23 +++++++++++++++++++++++
stubs/meson.build | 2 --
4 files changed, 23 insertions(+), 16 deletions(-)
rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)
diff --git a/meson.build b/meson.build
index 503cde5ea90..538efb7092d 100644
--- a/meson.build
+++ b/meson.build
@@ -4248,7 +4248,6 @@ if have_rust
endif
-feature_to_c = find_program('scripts/feature_to_c.py')
rust_root_crate = find_program('scripts/rust/rust_root_crate.sh')
if host_os == 'darwin'
@@ -4328,19 +4327,6 @@ foreach target : target_dirs
endif
endif
- if 'TARGET_XML_FILES' in config_target
- gdbstub_xml_files = []
- foreach gdbstub_xml : config_target['TARGET_XML_FILES'].split()
- gdbstub_xml_files += 'gdbstub/gdb-xml/' + gdbstub_xml
- endforeach
- gdbstub_xml = custom_target(target + '-gdbstub-xml.c',
- output: target + '-gdbstub-xml.c',
- input: files(gdbstub_xml_files),
- command: [feature_to_c, '@INPUT@'],
- capture: true)
- arch_srcs += gdbstub_xml
- endif
-
if target in config_target_info
arch_srcs += config_target_info[target]
else
diff --git a/stubs/gdbstub.c b/gdbstub/gdb-xml-stub.c
similarity index 100%
rename from stubs/gdbstub.c
rename to gdbstub/gdb-xml-stub.c
diff --git a/gdbstub/meson.build b/gdbstub/meson.build
index 15c666f5752..b61d2e915c1 100644
--- a/gdbstub/meson.build
+++ b/gdbstub/meson.build
@@ -4,6 +4,29 @@
# types such as hwaddr.
#
+gdbstub_xml_files = []
+foreach target : target_dirs
+ config_target = config_target_mak[target]
+ if 'TARGET_XML_FILES' in config_target
+ foreach gdbstub_xml : config_target['TARGET_XML_FILES'].split()
+ if not gdbstub_xml_files.contains('gdb-xml/' + gdbstub_xml)
+ gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
+ endif
+ endforeach
+ endif
+endforeach
+if gdbstub_xml_files.length() > 0
+ feature_to_c = find_program('../scripts/feature_to_c.py')
+ gdbstub_xml = custom_target('gdbstub-xml.c',
+ output: 'gdbstub-xml.c',
+ input: files(gdbstub_xml_files),
+ command: [feature_to_c, '@INPUT@'],
+ capture: true)
+else
+ gdbstub_xml = files('gdb-xml-stub.c')
+endif
+common_ss.add(gdbstub_xml)
+
# We build two versions of gdbstub, one for each mode
user_ss.add(files(
'gdbstub.c',
diff --git a/stubs/meson.build b/stubs/meson.build
index fad796a49da..7189ff63ed5 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -89,8 +89,6 @@ if have_system
endif
if have_system or have_user
- stub_ss.add(files('gdbstub.c'))
-
# Also included in have_system for --disable-tcg builds
stub_ss.add(files('replay.c'))
--
2.47.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PULL 00/16] gdbstub: Always infer base register index from GDB XML
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (15 preceding siblings ...)
2026-03-11 1:38 ` [PULL 16/16] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Pierrick Bouvier
@ 2026-03-11 1:41 ` Pierrick Bouvier
2026-03-12 9:54 ` Philippe Mathieu-Daudé
2026-03-12 9:47 ` Peter Maydell
17 siblings, 1 reply; 22+ messages in thread
From: Pierrick Bouvier @ 2026-03-11 1:41 UTC (permalink / raw)
To: qemu-devel, peter.maydell, richard.henderson, pbonzini, stefanha,
Philippe Mathieu-Daudé
Cc: Alex Bennée
On 3/10/26 6:38 PM, Pierrick Bouvier wrote:
> The following changes since commit ae56950eac7b61b1abf42003329ee0f3ce111711:
>
> Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
>
> are available in the Git repository at:
>
> https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
>
> for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
>
> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] (2026-03-10 17:12:18 -0700)
>
> ----------------------------------------------------------------
> - [PATCH v4 00/16] gdbstub: Always infer base register index from GDB (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
> Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-philmd@linaro.org
>
> ----------------------------------------------------------------
> Alex Bennée (1):
> tests/docker: add gdb-multiarch to all-test-cross
>
> Philippe Mathieu-Daudé (15):
> tests/tcg: Temporary disable multiarch tests for PPC targets
> tests/tcg: Disable prot-none test on GitLab
> target/i386/gdbstub: Remove stale comment
> meson: Restrict gdbstub to user/system builds
> gdbstub: Simplify gdb_init_cpu() logic
> gdbstub: Add trace events for around XML parsing / generation
> gdbstub: Have scripts/feature_to_c.py generate more verbose output
> gdbstub: Make base register explicit in m68k GDB XML files
> gdbstub: Remove @g_pos argument in gdb_register_coprocessor()
> gdbstub: Emit base_register index in GDBFeature entries
> gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor()
> tests/tcg: Re-enable disabled multiarch tests for PPC targets
> gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
> gdbstub: Move gdb-xml/ within gdbstub/
> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
>
Send this PR for Philippe, as it's the last day for soft freeze, and
that it's already the middle of the night in his timezone. We tested it
together.
This series fixes original issue reported here:
https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
As well, it enables gdbstub tests that were never ran in CI since
gdb-multiarch was not installed.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PULL 00/16] gdbstub: Always infer base register index from GDB XML
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
` (16 preceding siblings ...)
2026-03-11 1:41 ` [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
@ 2026-03-12 9:47 ` Peter Maydell
2026-03-12 10:06 ` Philippe Mathieu-Daudé
17 siblings, 1 reply; 22+ messages in thread
From: Peter Maydell @ 2026-03-12 9:47 UTC (permalink / raw)
To: Pierrick Bouvier; +Cc: qemu-devel, richard.henderson, pbonzini, stefanha
On Wed, 11 Mar 2026 at 01:38, Pierrick Bouvier
<pierrick.bouvier@linaro.org> wrote:
>
> The following changes since commit ae56950eac7b61b1abf42003329ee0f3ce111711:
>
> Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
>
> are available in the Git repository at:
>
> https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
>
> for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
>
> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] (2026-03-10 17:12:18 -0700)
>
> ----------------------------------------------------------------
> - [PATCH v4 00/16] gdbstub: Always infer base register index from GDB (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
> Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-philmd@linaro.org
>
> ----------------------------------------------------------------
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/11.0
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PULL 00/16] gdbstub: Always infer base register index from GDB XML
2026-03-11 1:41 ` [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
@ 2026-03-12 9:54 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 22+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-12 9:54 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel, peter.maydell, richard.henderson,
pbonzini, stefanha
Cc: Alex Bennée
On 11/3/26 02:41, Pierrick Bouvier wrote:
> On 3/10/26 6:38 PM, Pierrick Bouvier wrote:
>> The following changes since commit
>> ae56950eac7b61b1abf42003329ee0f3ce111711:
>>
>> Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/
>> kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
>>
>> are available in the Git repository at:
>>
>> https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
>>
>> for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
>>
>> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
>> (2026-03-10 17:12:18 -0700)
>>
>> ----------------------------------------------------------------
>> - [PATCH v4 00/16] gdbstub: Always infer base register index from GDB
>> (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
>> Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-
>> philmd@linaro.org
>>
>> ----------------------------------------------------------------
>> Alex Bennée (1):
>> tests/docker: add gdb-multiarch to all-test-cross
>>
>> Philippe Mathieu-Daudé (15):
>> tests/tcg: Temporary disable multiarch tests for PPC targets
>> tests/tcg: Disable prot-none test on GitLab
>> target/i386/gdbstub: Remove stale comment
>> meson: Restrict gdbstub to user/system builds
>> gdbstub: Simplify gdb_init_cpu() logic
>> gdbstub: Add trace events for around XML parsing / generation
>> gdbstub: Have scripts/feature_to_c.py generate more verbose output
>> gdbstub: Make base register explicit in m68k GDB XML files
>> gdbstub: Remove @g_pos argument in gdb_register_coprocessor()
>> gdbstub: Emit base_register index in GDBFeature entries
>> gdbstub: Consider GDBFeature::base_reg in
>> gdb_register_coprocessor()
>> tests/tcg: Re-enable disabled multiarch tests for PPC targets
>> gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
>> gdbstub: Move gdb-xml/ within gdbstub/
>> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
>>
> Send this PR for Philippe, as it's the last day for soft freeze, and
> that it's already the middle of the night in his timezone. We tested it
> together.
Thanks for the help Pierrick!
>
> This series fixes original issue reported here:
> https://lore.kernel.org/qemu-devel/e44df309-
> d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
>
> As well, it enables gdbstub tests that were never ran in CI since gdb-
> multiarch was not installed.
>
> Regards,
> Pierrick
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PULL 00/16] gdbstub: Always infer base register index from GDB XML
2026-03-12 9:47 ` Peter Maydell
@ 2026-03-12 10:06 ` Philippe Mathieu-Daudé
2026-03-16 6:28 ` Markus Armbruster
0 siblings, 1 reply; 22+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-12 10:06 UTC (permalink / raw)
To: Alex Bennée, Anton Johansson, Daniel P. Berrangé
Cc: qemu-devel, Peter Maydell, Pierrick Bouvier, richard.henderson,
pbonzini, stefanha, Thomas Huth, Markus Armbruster,
Mark Cave-Ayland, Mark Burton, Dr. David Alan Gilbert
On 12/3/26 10:47, Peter Maydell wrote:
> On Wed, 11 Mar 2026 at 01:38, Pierrick Bouvier
> <pierrick.bouvier@linaro.org> wrote:
>>
>> The following changes since commit ae56950eac7b61b1abf42003329ee0f3ce111711:
>>
>> Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
>>
>> are available in the Git repository at:
>>
>> https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
>>
>> for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
>>
>> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] (2026-03-10 17:12:18 -0700)
>>
>> ----------------------------------------------------------------
>> - [PATCH v4 00/16] gdbstub: Always infer base register index from GDB (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
>> Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-philmd@linaro.org
>>
>> ----------------------------------------------------------------
>
>
>
> Applied, thanks.
As of this merged commit 769a37d8bd0:
v10.0: Total build units: 7797
(https://gitlab.com/qemu-project/qemu/-/jobs/9788294720)
v10.1: Total build units: 6443
(https://gitlab.com/qemu-project/qemu/-/jobs/11142814212)
v10.2: Total build units: 6367
(https://gitlab.com/qemu-project/qemu/-/jobs/12474666739)
current: Total build units: 5679
(https://gitlab.com/qemu-project/qemu/-/jobs/11142814212)
v10.2 -> v11.0 delta so far: 6367 - 5679 = 688 (-12%)
v10.0 -> v11.0 delta so far: 7797 - 5679 = 2118 (-37%)
I'd like to thanks Alex for pushing this effort forward, Pierrick
Richard Anton and few others for the work done and reviews.
(We are no down to 2 duplicated common symbols, then start the
harder parts with duplicated target symbols...)
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PULL 00/16] gdbstub: Always infer base register index from GDB XML
2026-03-12 10:06 ` Philippe Mathieu-Daudé
@ 2026-03-16 6:28 ` Markus Armbruster
0 siblings, 0 replies; 22+ messages in thread
From: Markus Armbruster @ 2026-03-16 6:28 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Alex Bennée, Anton Johansson, Daniel P. Berrangé,
qemu-devel, Peter Maydell, Pierrick Bouvier, richard.henderson,
pbonzini, stefanha, Thomas Huth, Mark Cave-Ayland, Mark Burton,
Dr. David Alan Gilbert
Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> On 12/3/26 10:47, Peter Maydell wrote:
>> On Wed, 11 Mar 2026 at 01:38, Pierrick Bouvier
>> <pierrick.bouvier@linaro.org> wrote:
>>>
>>> The following changes since commit ae56950eac7b61b1abf42003329ee0f3ce111711:
>>>
>>> Merge tag 'firmware-20260310-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-03-10 13:32:30 +0000)
>>>
>>> are available in the Git repository at:
>>>
>>> https://gitlab.com/pbo-linaro/qemu tags/pr-gdbstub-20260310
>>>
>>> for you to fetch changes up to 6511d4eed79a7e59f03e661f31924277e4d6e600:
>>>
>>> gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] (2026-03-10 17:12:18 -0700)
>>>
>>> ----------------------------------------------------------------
>>> - [PATCH v4 00/16] gdbstub: Always infer base register index from GDB (=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>)
>>> Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-1-philmd@linaro.org
>>>
>>> ----------------------------------------------------------------
>> Applied, thanks.
>
> As of this merged commit 769a37d8bd0:
>
> v10.0: Total build units: 7797
> (https://gitlab.com/qemu-project/qemu/-/jobs/9788294720)
> v10.1: Total build units: 6443
> (https://gitlab.com/qemu-project/qemu/-/jobs/11142814212)
> v10.2: Total build units: 6367
> (https://gitlab.com/qemu-project/qemu/-/jobs/12474666739)
> current: Total build units: 5679
> (https://gitlab.com/qemu-project/qemu/-/jobs/11142814212)
>
> v10.2 -> v11.0 delta so far: 6367 - 5679 = 688 (-12%)
> v10.0 -> v11.0 delta so far: 7797 - 5679 = 2118 (-37%)
Lovely! Thanks to everybody involved!
> I'd like to thanks Alex for pushing this effort forward, Pierrick
> Richard Anton and few others for the work done and reviews.
>
> (We are no down to 2 duplicated common symbols, then start the
> harder parts with duplicated target symbols...)
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2026-03-16 6:29 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-11 1:38 [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
2026-03-11 1:38 ` [PULL 01/16] tests/tcg: Temporary disable multiarch tests for PPC targets Pierrick Bouvier
2026-03-11 1:38 ` [PULL 02/16] tests/tcg: Disable prot-none test on GitLab Pierrick Bouvier
2026-03-11 1:38 ` [PULL 03/16] tests/docker: add gdb-multiarch to all-test-cross Pierrick Bouvier
2026-03-11 1:38 ` [PULL 04/16] target/i386/gdbstub: Remove stale comment Pierrick Bouvier
2026-03-11 1:38 ` [PULL 05/16] meson: Restrict gdbstub to user/system builds Pierrick Bouvier
2026-03-11 1:38 ` [PULL 06/16] gdbstub: Simplify gdb_init_cpu() logic Pierrick Bouvier
2026-03-11 1:38 ` [PULL 07/16] gdbstub: Add trace events for around XML parsing / generation Pierrick Bouvier
2026-03-11 1:38 ` [PULL 08/16] gdbstub: Have scripts/feature_to_c.py generate more verbose output Pierrick Bouvier
2026-03-11 1:38 ` [PULL 09/16] gdbstub: Make base register explicit in m68k GDB XML files Pierrick Bouvier
2026-03-11 1:38 ` [PULL 10/16] gdbstub: Remove @g_pos argument in gdb_register_coprocessor() Pierrick Bouvier
2026-03-11 1:38 ` [PULL 11/16] gdbstub: Emit base_register index in GDBFeature entries Pierrick Bouvier
2026-03-11 1:38 ` [PULL 12/16] gdbstub: Consider GDBFeature::base_reg in gdb_register_coprocessor() Pierrick Bouvier
2026-03-11 1:38 ` [PULL 13/16] tests/tcg: Re-enable disabled multiarch tests for PPC targets Pierrick Bouvier
2026-03-11 1:38 ` [PULL 14/16] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Pierrick Bouvier
2026-03-11 1:38 ` [PULL 15/16] gdbstub: Move gdb-xml/ within gdbstub/ Pierrick Bouvier
2026-03-11 1:38 ` [PULL 16/16] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Pierrick Bouvier
2026-03-11 1:41 ` [PULL 00/16] gdbstub: Always infer base register index from GDB XML Pierrick Bouvier
2026-03-12 9:54 ` Philippe Mathieu-Daudé
2026-03-12 9:47 ` Peter Maydell
2026-03-12 10:06 ` Philippe Mathieu-Daudé
2026-03-16 6:28 ` Markus Armbruster
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox