All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
@ 2026-02-27 10:43 Philippe Mathieu-Daudé
  2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-02-27 10:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Thomas Huth, Pierrick Bouvier, Alex Bennée

v4: Move gdb-xml/ directory under gdbstub/
v3: Restrict meson to gdbstub/
v2: Check array length

Philippe Mathieu-Daudé (4):
  meson: Restrict gdbstub to user/system builds
  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/microblazeel-softmmu.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 +----------
 stubs/gdbstub.c => gdbstub/gdb-xml-stub.c     |  0
 {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
 gdbstub/meson.build                           | 21 +++++++++++++++++++
 stubs/meson.build                             |  2 --
 112 files changed, 77 insertions(+), 71 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 (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%)

-- 
2.52.0



^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds
  2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
@ 2026-02-27 10:43 ` Philippe Mathieu-Daudé
  2026-02-27 10:57   ` Manos Pitsidianakis
  2026-02-27 13:00   ` Alex Bennée
  2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-02-27 10:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Thomas Huth, Pierrick Bouvier, Alex Bennée

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>
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 3cd1d8dbc66..60415df69a1 100644
--- a/meson.build
+++ b/meson.build
@@ -3724,7 +3724,6 @@ subdir('qom')
 subdir('authz')
 subdir('crypto')
 subdir('ui')
-subdir('gdbstub')
 if have_system
   subdir('hw')
 else
@@ -3767,6 +3766,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.52.0



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
  2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
  2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
@ 2026-02-27 10:43 ` Philippe Mathieu-Daudé
  2026-02-27 11:00   ` Manos Pitsidianakis
                     ` (2 more replies)
  2026-02-27 10:43 ` [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/ Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  4 siblings, 3 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-02-27 10:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Thomas Huth, Pierrick Bouvier, Alex Bennée

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>
---
 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/microblazeel-softmmu.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 +++++-
 47 files changed, 51 insertions(+), 47 deletions(-)

diff --git a/configs/targets/aarch64-bsd-user.mak b/configs/targets/aarch64-bsd-user.mak
index 7f42e060477..3a839b301e4 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-sme2.xml
+TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.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/microblazeel-softmmu.mak b/configs/targets/microblazeel-softmmu.mak
index 52feb957b48..56adbaa5ad4 100644
--- a/configs/targets/microblazeel-softmmu.mak
+++ b/configs/targets/microblazeel-softmmu.mak
@@ -1,6 +1,6 @@
 TARGET_ARCH=microblaze
 # 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/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 60415df69a1..42f9cfb5512 100644
--- a/meson.build
+++ b/meson.build
@@ -4302,9 +4302,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.52.0



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/
  2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
  2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
  2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
@ 2026-02-27 10:43 ` Philippe Mathieu-Daudé
  2026-02-27 10:58   ` Manos Pitsidianakis
  2026-02-27 13:00   ` Alex Bennée
  2026-02-27 10:43 ` [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
  2026-02-27 15:01 ` [PATCH v4 0/4] " Alex Bennée
  4 siblings, 2 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-02-27 10:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Thomas Huth, Pierrick Bouvier, Alex Bennée

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>
---
 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 606b16762cf..fd316018b68 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
@@ -214,8 +214,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>
@@ -230,7 +230,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/
 
@@ -245,7 +245,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
@@ -304,7 +304,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
@@ -403,7 +403,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
@@ -491,7 +491,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
 
@@ -1348,7 +1348,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
 -------------
@@ -3299,7 +3299,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 42f9cfb5512..56a746fed00 100644
--- a/meson.build
+++ b/meson.build
@@ -4304,7 +4304,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.52.0



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
  2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2026-02-27 10:43 ` [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/ Philippe Mathieu-Daudé
@ 2026-02-27 10:43 ` Philippe Mathieu-Daudé
  2026-02-27 11:07   ` Manos Pitsidianakis
  2026-03-01 14:05   ` Chao Liu
  2026-02-27 15:01 ` [PATCH v4 0/4] " Alex Bennée
  4 siblings, 2 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-02-27 10:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Thomas Huth, Pierrick Bouvier, Alex Bennée

gdb_static_features[] only contains strings, nothing target-specific.
Instead of generating one file per target, generate a single file
with a single gdb_static_features[] array.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 meson.build                               | 14 --------------
 stubs/gdbstub.c => gdbstub/gdb-xml-stub.c |  0
 gdbstub/meson.build                       | 21 +++++++++++++++++++++
 stubs/meson.build                         |  2 --
 4 files changed, 21 insertions(+), 16 deletions(-)
 rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)

diff --git a/meson.build b/meson.build
index 56a746fed00..875a0bb1999 100644
--- a/meson.build
+++ b/meson.build
@@ -4221,7 +4221,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'
@@ -4301,19 +4300,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..a25a5ae9fbf 100644
--- a/gdbstub/meson.build
+++ b/gdbstub/meson.build
@@ -4,6 +4,27 @@
 # 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()
+      gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
+    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 8a07059500d..1e0f6f47377 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.52.0



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds
  2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
@ 2026-02-27 10:57   ` Manos Pitsidianakis
  2026-02-27 13:00   ` Alex Bennée
  1 sibling, 0 replies; 16+ messages in thread
From: Manos Pitsidianakis @ 2026-02-27 10:57 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

On Fri, Feb 27, 2026 at 12:43 PM Philippe Mathieu-Daudé
<philmd@linaro.org> wrote:
>
> 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>

>  meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meson.build b/meson.build
> index 3cd1d8dbc66..60415df69a1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -3724,7 +3724,6 @@ subdir('qom')
>  subdir('authz')
>  subdir('crypto')
>  subdir('ui')
> -subdir('gdbstub')
>  if have_system
>    subdir('hw')
>  else
> @@ -3767,6 +3766,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.52.0
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/
  2026-02-27 10:43 ` [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/ Philippe Mathieu-Daudé
@ 2026-02-27 10:58   ` Manos Pitsidianakis
  2026-02-27 13:00   ` Alex Bennée
  1 sibling, 0 replies; 16+ messages in thread
From: Manos Pitsidianakis @ 2026-02-27 10:58 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

On Fri, Feb 27, 2026 at 12:44 PM Philippe Mathieu-Daudé
<philmd@linaro.org> wrote:
>
> 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>

>  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 606b16762cf..fd316018b68 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
> @@ -214,8 +214,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>
> @@ -230,7 +230,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/
>
> @@ -245,7 +245,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
> @@ -304,7 +304,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
> @@ -403,7 +403,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
> @@ -491,7 +491,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
>
> @@ -1348,7 +1348,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
>  -------------
> @@ -3299,7 +3299,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 42f9cfb5512..56a746fed00 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4304,7 +4304,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.52.0
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
  2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
@ 2026-02-27 11:00   ` Manos Pitsidianakis
  2026-02-27 12:21   ` Warner Losh
  2026-02-27 13:01   ` Alex Bennée
  2 siblings, 0 replies; 16+ messages in thread
From: Manos Pitsidianakis @ 2026-02-27 11:00 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

On Fri, Feb 27, 2026 at 12:44 PM Philippe Mathieu-Daudé
<philmd@linaro.org> wrote:
>
> 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>

>  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/microblazeel-softmmu.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 +++++-
>  47 files changed, 51 insertions(+), 47 deletions(-)
>
> diff --git a/configs/targets/aarch64-bsd-user.mak b/configs/targets/aarch64-bsd-user.mak
> index 7f42e060477..3a839b301e4 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-sme2.xml
> +TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.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/microblazeel-softmmu.mak b/configs/targets/microblazeel-softmmu.mak
> index 52feb957b48..56adbaa5ad4 100644
> --- a/configs/targets/microblazeel-softmmu.mak
> +++ b/configs/targets/microblazeel-softmmu.mak
> @@ -1,6 +1,6 @@
>  TARGET_ARCH=microblaze
>  # 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/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 60415df69a1..42f9cfb5512 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4302,9 +4302,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.52.0
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
  2026-02-27 10:43 ` [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
@ 2026-02-27 11:07   ` Manos Pitsidianakis
  2026-03-01 14:05   ` Chao Liu
  1 sibling, 0 replies; 16+ messages in thread
From: Manos Pitsidianakis @ 2026-02-27 11:07 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

On Fri, Feb 27, 2026 at 12:44 PM Philippe Mathieu-Daudé
<philmd@linaro.org> wrote:
>
> gdb_static_features[] only contains strings, nothing target-specific.

Nit:
It does though, doesn't it?

./aarch64-softmmu-gdbstub-xml.c will contain aarch64-core.xml etc and
./x86_64-softmmu-gdbstub-xml.c will contain i386-64bit.xml. You
probably meant "does not depend on target-specific code".

Changes LGTM

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>



> Instead of generating one file per target, generate a single file
> with a single gdb_static_features[] array.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  meson.build                               | 14 --------------
>  stubs/gdbstub.c => gdbstub/gdb-xml-stub.c |  0
>  gdbstub/meson.build                       | 21 +++++++++++++++++++++
>  stubs/meson.build                         |  2 --
>  4 files changed, 21 insertions(+), 16 deletions(-)
>  rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)
>
> diff --git a/meson.build b/meson.build
> index 56a746fed00..875a0bb1999 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4221,7 +4221,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'
> @@ -4301,19 +4300,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..a25a5ae9fbf 100644
> --- a/gdbstub/meson.build
> +++ b/gdbstub/meson.build
> @@ -4,6 +4,27 @@
>  # 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()
> +      gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
> +    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 8a07059500d..1e0f6f47377 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.52.0
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
  2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
  2026-02-27 11:00   ` Manos Pitsidianakis
@ 2026-02-27 12:21   ` Warner Losh
  2026-02-27 13:01   ` Alex Bennée
  2 siblings, 0 replies; 16+ messages in thread
From: Warner Losh @ 2026-02-27 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 2100 bytes --]

On Fri, Feb 27, 2026 at 3:44 AM Philippe Mathieu-Daudé <philmd@linaro.org>
wrote:

> 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: Warner Losh <imp@bsdimp.com>

This looks fine, and should work with the modified meson. One observation...

diff --git a/configs/targets/aarch64-bsd-user.mak
> b/configs/targets/aarch64-bsd-user.mak
> index 7f42e060477..3a839b301e4 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-sme2.xml
> +TARGET_XML_FILES= aarch64-core.xml aarch64-fpu.xml aarch64-pauth.xml
> aarch64-sme2.xml
>

This seems to be missing aarch64-mte.xml that linux-user has. I have a
patch in my queue to fix this since it leads to an instant assertion in
some cases. When are you landing these changes so I can plan? Otherwise
we'll collide when we submit the pull requests. The patch came in as a pull
request on the upstream blitz...


>  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


Warner

[-- Attachment #2: Type: text/html, Size: 2946 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds
  2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
  2026-02-27 10:57   ` Manos Pitsidianakis
@ 2026-02-27 13:00   ` Alex Bennée
  1 sibling, 0 replies; 16+ messages in thread
From: Alex Bennée @ 2026-02-27 13:00 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier

Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> 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: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/
  2026-02-27 10:43 ` [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/ Philippe Mathieu-Daudé
  2026-02-27 10:58   ` Manos Pitsidianakis
@ 2026-02-27 13:00   ` Alex Bennée
  1 sibling, 0 replies; 16+ messages in thread
From: Alex Bennée @ 2026-02-27 13:00 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier

Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> 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: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES
  2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
  2026-02-27 11:00   ` Manos Pitsidianakis
  2026-02-27 12:21   ` Warner Losh
@ 2026-02-27 13:01   ` Alex Bennée
  2 siblings, 0 replies; 16+ messages in thread
From: Alex Bennée @ 2026-02-27 13:01 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier

Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> 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: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
  2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2026-02-27 10:43 ` [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
@ 2026-02-27 15:01 ` Alex Bennée
  4 siblings, 0 replies; 16+ messages in thread
From: Alex Bennée @ 2026-02-27 15:01 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier

Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> v4: Move gdb-xml/ directory under gdbstub/
> v3: Restrict meson to gdbstub/
> v2: Check array length
>
> Philippe Mathieu-Daudé (4):
>   meson: Restrict gdbstub to user/system builds
>   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[]

with the ppc fix:

Tested-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>


>
>  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/microblazeel-softmmu.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 +----------
>  stubs/gdbstub.c => gdbstub/gdb-xml-stub.c     |  0
>  {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
>  gdbstub/meson.build                           | 21 +++++++++++++++++++
>  stubs/meson.build                             |  2 --
>  112 files changed, 77 insertions(+), 71 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 (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%)

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
  2026-02-27 10:43 ` [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
  2026-02-27 11:07   ` Manos Pitsidianakis
@ 2026-03-01 14:05   ` Chao Liu
  2026-03-10 15:26     ` Philippe Mathieu-Daudé
  1 sibling, 1 reply; 16+ messages in thread
From: Chao Liu @ 2026-03-01 14:05 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

Hi Philippe,

On Fri, Feb 27, 2026 at 11:43:14AM +0100, Philippe Mathieu-Daudé wrote:
> gdb_static_features[] only contains strings, nothing target-specific.
> Instead of generating one file per target, generate a single file
> with a single gdb_static_features[] array.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  meson.build                               | 14 --------------
>  stubs/gdbstub.c => gdbstub/gdb-xml-stub.c |  0
>  gdbstub/meson.build                       | 21 +++++++++++++++++++++
>  stubs/meson.build                         |  2 --
>  4 files changed, 21 insertions(+), 16 deletions(-)
>  rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)
> 
> diff --git a/meson.build b/meson.build
> index 56a746fed00..875a0bb1999 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4221,7 +4221,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'
> @@ -4301,19 +4300,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..a25a5ae9fbf 100644
> --- a/gdbstub/meson.build
> +++ b/gdbstub/meson.build
> @@ -4,6 +4,27 @@
>  # 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()
> +      gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
Many XML files are shared across multiple targets. For example,
arm-core.xml appears in 5 targets (arm-softmmu, arm-linux-user,
arm-bsd-user, armeb-linux-user, arm-softmmu), riscv-64bit-fpu.xml
in 5 targets, etc.

Since there is no deduplication here, feature_to_c.py will receive
duplicate input files and generate duplicate GDBFeature entries in
gdb_static_features[]. While gdb_find_static_feature() does a
first-match linear scan so it won't break, it unnecessarily bloats
the binary.

Consider adding a dedup check:

```
    if not gdbstub_xml_files.contains('gdb-xml/' + gdbstub_xml)
      gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
    endif
```

I tested this by actually running feature_to_c.py with the collected
XML files:

==Without deduplication:==
- Total references: 171
- Unique files: 60
- Duplicates: 111 (64.91%)
- Generated file: 669 KB, 17,777 lines
- Example: arm-core.xml appears 5 times at lines 1527, 2705, 3276, 3847, 4418
  (each occurrence is 2400 bytes of identical code)

==With deduplication:==
- Generated file: 244 KB, 6,243 lines
- Space saved: 425 KB (63.57% reduction)
- No duplicate entries

---

Everything else looks good to me.

Reviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>

Thanks,
Chao
> +    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 8a07059500d..1e0f6f47377 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.52.0
> 
> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[]
  2026-03-01 14:05   ` Chao Liu
@ 2026-03-10 15:26     ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-10 15:26 UTC (permalink / raw)
  To: Chao Liu
  Cc: qemu-devel, Paolo Bonzini, Thomas Huth, Pierrick Bouvier,
	Alex Bennée

On 1/3/26 15:05, Chao Liu wrote:
> Hi Philippe,
> 
> On Fri, Feb 27, 2026 at 11:43:14AM +0100, Philippe Mathieu-Daudé wrote:
>> gdb_static_features[] only contains strings, nothing target-specific.
>> Instead of generating one file per target, generate a single file
>> with a single gdb_static_features[] array.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>   meson.build                               | 14 --------------
>>   stubs/gdbstub.c => gdbstub/gdb-xml-stub.c |  0
>>   gdbstub/meson.build                       | 21 +++++++++++++++++++++
>>   stubs/meson.build                         |  2 --
>>   4 files changed, 21 insertions(+), 16 deletions(-)
>>   rename stubs/gdbstub.c => gdbstub/gdb-xml-stub.c (100%)
>>
>> diff --git a/meson.build b/meson.build
>> index 56a746fed00..875a0bb1999 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -4221,7 +4221,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'
>> @@ -4301,19 +4300,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..a25a5ae9fbf 100644
>> --- a/gdbstub/meson.build
>> +++ b/gdbstub/meson.build
>> @@ -4,6 +4,27 @@
>>   # 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()
>> +      gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
> Many XML files are shared across multiple targets. For example,
> arm-core.xml appears in 5 targets (arm-softmmu, arm-linux-user,
> arm-bsd-user, armeb-linux-user, arm-softmmu), riscv-64bit-fpu.xml
> in 5 targets, etc.
> 
> Since there is no deduplication here, feature_to_c.py will receive
> duplicate input files and generate duplicate GDBFeature entries in
> gdb_static_features[]. While gdb_find_static_feature() does a
> first-match linear scan so it won't break, it unnecessarily bloats
> the binary.
> 
> Consider adding a dedup check:
> 
> ```
>      if not gdbstub_xml_files.contains('gdb-xml/' + gdbstub_xml)
>        gdbstub_xml_files += 'gdb-xml/' + gdbstub_xml
>      endif
> ```

Great suggestion, thanks!

> 
> I tested this by actually running feature_to_c.py with the collected
> XML files:
> 
> ==Without deduplication:==
> - Total references: 171
> - Unique files: 60
> - Duplicates: 111 (64.91%)
> - Generated file: 669 KB, 17,777 lines
> - Example: arm-core.xml appears 5 times at lines 1527, 2705, 3276, 3847, 4418
>    (each occurrence is 2400 bytes of identical code)
> 
> ==With deduplication:==
> - Generated file: 244 KB, 6,243 lines
> - Space saved: 425 KB (63.57% reduction)
> - No duplicate entries
> 
> ---
> 
> Everything else looks good to me.
> 
> Reviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>
> 
> Thanks,
> Chao
>> +    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 8a07059500d..1e0f6f47377 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.52.0
>>
>>



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-03-10 15:27 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-27 10:43 [PATCH v4 0/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
2026-02-27 10:43 ` [PATCH v4 1/4] meson: Restrict gdbstub to user/system builds Philippe Mathieu-Daudé
2026-02-27 10:57   ` Manos Pitsidianakis
2026-02-27 13:00   ` Alex Bennée
2026-02-27 10:43 ` [PATCH v4 2/4] gdbstub: Remove 'gdb-xml/' directory prefix in TARGET_XML_FILES Philippe Mathieu-Daudé
2026-02-27 11:00   ` Manos Pitsidianakis
2026-02-27 12:21   ` Warner Losh
2026-02-27 13:01   ` Alex Bennée
2026-02-27 10:43 ` [PATCH v4 3/4] gdbstub: Move gdb-xml/ within gdbstub/ Philippe Mathieu-Daudé
2026-02-27 10:58   ` Manos Pitsidianakis
2026-02-27 13:00   ` Alex Bennée
2026-02-27 10:43 ` [PATCH v4 4/4] gdbstub: Generate a single gdbstub-xml.c / gdb_static_features[] Philippe Mathieu-Daudé
2026-02-27 11:07   ` Manos Pitsidianakis
2026-03-01 14:05   ` Chao Liu
2026-03-10 15:26     ` Philippe Mathieu-Daudé
2026-02-27 15:01 ` [PATCH v4 0/4] " Alex Bennée

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.