configure | 473 --------- docs/devel/testing/main.rst | 22 +- plugins/api.c | 2 + scripts/probe-gdb-support.py | 1 + tests/Makefile.include | 68 +- tests/docker/docker.py | 4 +- .../dockerfiles/debian-all-test-cross.docker | 16 +- tests/lcitool/refresh | 107 +- tests/meson.build | 2 +- tests/tcg/Makefile.target | 281 ----- tests/tcg/aarch64/Makefile.softmmu-target | 147 --- tests/tcg/aarch64/Makefile.target | 198 ---- tests/tcg/aarch64/meson.build | 195 ++++ tests/tcg/aarch64/system/gpc-test.c | 5 - tests/tcg/aarch64/system/meson.build | 108 ++ tests/tcg/aarch64_be/Makefile.target | 17 - tests/tcg/aarch64_be/meson.build | 22 + tests/tcg/alpha/Makefile.softmmu-target | 34 - tests/tcg/alpha/Makefile.target | 18 - tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ tests/tcg/alpha/meson.build | 55 + tests/tcg/alpha/system/meson.build | 46 + tests/tcg/arm/Makefile.softmmu-target | 80 -- tests/tcg/arm/Makefile.target | 87 -- tests/tcg/arm/meson.build | 80 ++ tests/tcg/arm/system/meson.build | 66 ++ tests/tcg/hexagon/Makefile.target | 146 --- tests/tcg/hexagon/meson.build | 111 ++ tests/tcg/hexagon/overflow.c | 1 + tests/tcg/hppa/Makefile.target | 14 - tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ tests/tcg/hppa/meson.build | 22 + tests/tcg/i386/Makefile.softmmu-target | 37 - tests/tcg/i386/Makefile.target | 102 -- tests/tcg/i386/float_convd.conf | 988 ------------------ tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ tests/tcg/i386/meson.build | 58 + tests/tcg/i386/system/meson.build | 48 + tests/tcg/loongarch64/Makefile.softmmu-target | 33 - tests/tcg/loongarch64/Makefile.target | 20 - tests/tcg/loongarch64/meson.build | 32 + tests/tcg/loongarch64/system/meson.build | 47 + tests/tcg/m68k/Makefile.target | 7 - tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ tests/tcg/m68k/meson.build | 23 + tests/tcg/meson.build | 447 ++++++++ tests/tcg/minilib/Makefile.target | 21 - tests/tcg/mips/Makefile.target | 19 - tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips/float_convs.ref | 748 +++++++++++++ tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips/meson.build | 25 + tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - tests/tcg/mips/user/isa/r5900/Makefile | 32 - tests/tcg/mips64/Makefile.target | 20 - tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips64/meson.build | 27 + tests/tcg/mips64el/Makefile.target | 8 - tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips64el/meson.build | 14 + tests/tcg/multiarch/Makefile.target | 233 ----- tests/tcg/multiarch/meson.build | 149 +++ .../multiarch/plugin/check-plugin-output.sh | 36 - tests/tcg/multiarch/plugin/regex-compare.sh | 28 + tests/tcg/multiarch/sha1.c | 4 +- tests/tcg/multiarch/sha1.ref | 1 + .../multiarch/system/Makefile.softmmu-target | 81 -- tests/tcg/multiarch/system/memory.c | 3 +- tests/tcg/multiarch/system/meson.build | 53 + tests/tcg/or1k/Makefile | 71 -- tests/tcg/or1k/float_convd.ref | 247 +++++ tests/tcg/or1k/float_convs.ref | 187 ++++ tests/tcg/or1k/float_madds.ref | 192 ++++ tests/tcg/or1k/meson.build | 72 ++ tests/tcg/or1k/test_addic.c | 2 +- tests/tcg/or1k/test_muli.c | 5 +- tests/tcg/plugins/meson.build | 11 +- tests/tcg/ppc64/Makefile.target | 63 -- tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ tests/tcg/ppc64/meson.build | 56 + tests/tcg/ppc64/vector.c | 11 +- tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- tests/tcg/ppc64le/Makefile.target | 7 - tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/ppc64le/meson.build | 14 + tests/tcg/riscv64/Makefile.softmmu-target | 45 - tests/tcg/riscv64/Makefile.target | 20 - tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ tests/tcg/riscv64/meson.build | 38 + tests/tcg/riscv64/system/meson.build | 38 + tests/tcg/s390x/Makefile.softmmu-target | 57 - tests/tcg/s390x/Makefile.target | 127 --- tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ tests/tcg/s390x/head64.S | 2 + tests/tcg/s390x/meson.build | 140 +++ tests/tcg/s390x/system/meson.build | 92 ++ tests/tcg/scripts/check_plugin_output.sh | 25 + tests/tcg/scripts/record_replay.sh | 16 + .../scripts/run_and_check_forbidden_output.sh | 19 + tests/tcg/scripts/run_and_diff.sh | 15 + tests/tcg/scripts/run_with_input.sh | 12 + tests/tcg/sh4/Makefile.target | 18 - tests/tcg/sh4/float_convd.ref | 494 +++++++++ tests/tcg/sh4/float_convs.ref | 374 +++++++ tests/tcg/sh4/float_madds.ref | 384 +++++++ tests/tcg/sh4/meson.build | 25 + tests/tcg/tricore/Makefile.softmmu-target | 53 - tests/tcg/x86_64/Makefile.softmmu-target | 44 - tests/tcg/x86_64/Makefile.target | 40 - tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ tests/tcg/x86_64/meson.build | 83 ++ tests/tcg/x86_64/system/meson.build | 62 ++ tests/tcg/xtensa/Makefile.softmmu-target | 46 - tests/tcg/xtensa/crt.S | 1 + tests/tcg/xtensa/meson.build | 89 ++ tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - 134 files changed, 30491 insertions(+), 4114 deletions(-) delete mode 100644 tests/tcg/Makefile.target delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target delete mode 100644 tests/tcg/aarch64/Makefile.target create mode 100644 tests/tcg/aarch64/meson.build create mode 100644 tests/tcg/aarch64/system/meson.build delete mode 100644 tests/tcg/aarch64_be/Makefile.target create mode 100644 tests/tcg/aarch64_be/meson.build delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target delete mode 100644 tests/tcg/alpha/Makefile.target create mode 100644 tests/tcg/alpha/float_convd.ref create mode 100644 tests/tcg/alpha/float_convs.ref create mode 100644 tests/tcg/alpha/float_madds.ref create mode 100644 tests/tcg/alpha/meson.build create mode 100644 tests/tcg/alpha/system/meson.build delete mode 100644 tests/tcg/arm/Makefile.softmmu-target delete mode 100644 tests/tcg/arm/Makefile.target create mode 100644 tests/tcg/arm/meson.build create mode 100644 tests/tcg/arm/system/meson.build delete mode 100644 tests/tcg/hexagon/Makefile.target create mode 100644 tests/tcg/hexagon/meson.build delete mode 100644 tests/tcg/hppa/Makefile.target create mode 100644 tests/tcg/hppa/float_convd.ref create mode 100644 tests/tcg/hppa/float_convs.ref create mode 100644 tests/tcg/hppa/float_madds.ref create mode 100644 tests/tcg/hppa/meson.build delete mode 100644 tests/tcg/i386/Makefile.softmmu-target delete mode 100644 tests/tcg/i386/Makefile.target delete mode 100644 tests/tcg/i386/float_convd.conf create mode 100644 tests/tcg/i386/float_convd.ref create mode 100644 tests/tcg/i386/float_madds.ref create mode 100644 tests/tcg/i386/meson.build create mode 100644 tests/tcg/i386/system/meson.build delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target delete mode 100644 tests/tcg/loongarch64/Makefile.target create mode 100644 tests/tcg/loongarch64/meson.build create mode 100644 tests/tcg/loongarch64/system/meson.build delete mode 100644 tests/tcg/m68k/Makefile.target create mode 100644 tests/tcg/m68k/float_convd.ref create mode 100644 tests/tcg/m68k/float_convs.ref create mode 100644 tests/tcg/m68k/float_madds.ref create mode 100644 tests/tcg/m68k/meson.build create mode 100644 tests/tcg/meson.build delete mode 100644 tests/tcg/minilib/Makefile.target delete mode 100644 tests/tcg/mips/Makefile.target create mode 100644 tests/tcg/mips/float_convd.ref create mode 100644 tests/tcg/mips/float_convs.ref create mode 100644 tests/tcg/mips/float_madds.ref create mode 100644 tests/tcg/mips/meson.build delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile delete mode 100644 tests/tcg/mips64/Makefile.target create mode 100644 tests/tcg/mips64/float_convd.ref create mode 100644 tests/tcg/mips64/float_convs.ref create mode 100644 tests/tcg/mips64/float_madds.ref create mode 100644 tests/tcg/mips64/meson.build delete mode 100644 tests/tcg/mips64el/Makefile.target create mode 100644 tests/tcg/mips64el/float_convd.ref create mode 100644 tests/tcg/mips64el/float_convs.ref create mode 100644 tests/tcg/mips64el/float_madds.ref create mode 100644 tests/tcg/mips64el/meson.build delete mode 100644 tests/tcg/multiarch/Makefile.target create mode 100644 tests/tcg/multiarch/meson.build delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh create mode 100644 tests/tcg/multiarch/sha1.ref delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target create mode 100644 tests/tcg/multiarch/system/meson.build delete mode 100644 tests/tcg/or1k/Makefile create mode 100644 tests/tcg/or1k/float_convd.ref create mode 100644 tests/tcg/or1k/float_convs.ref create mode 100644 tests/tcg/or1k/float_madds.ref create mode 100644 tests/tcg/or1k/meson.build delete mode 100644 tests/tcg/ppc64/Makefile.target create mode 100644 tests/tcg/ppc64/float_convd.ref create mode 100644 tests/tcg/ppc64/float_convs.ref create mode 100644 tests/tcg/ppc64/float_madds.ref create mode 100644 tests/tcg/ppc64/meson.build delete mode 100644 tests/tcg/ppc64le/Makefile.target create mode 100644 tests/tcg/ppc64le/float_convd.ref create mode 100644 tests/tcg/ppc64le/meson.build delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target delete mode 100644 tests/tcg/riscv64/Makefile.target create mode 100644 tests/tcg/riscv64/float_convd.ref create mode 100644 tests/tcg/riscv64/float_convs.ref create mode 100644 tests/tcg/riscv64/float_madds.ref create mode 100644 tests/tcg/riscv64/meson.build create mode 100644 tests/tcg/riscv64/system/meson.build delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target delete mode 100644 tests/tcg/s390x/Makefile.target create mode 100644 tests/tcg/s390x/float_convd.ref create mode 100644 tests/tcg/s390x/float_convs.ref create mode 100644 tests/tcg/s390x/float_madds.ref create mode 100644 tests/tcg/s390x/meson.build create mode 100644 tests/tcg/s390x/system/meson.build create mode 100755 tests/tcg/scripts/check_plugin_output.sh create mode 100755 tests/tcg/scripts/record_replay.sh create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh create mode 100755 tests/tcg/scripts/run_and_diff.sh create mode 100755 tests/tcg/scripts/run_with_input.sh delete mode 100644 tests/tcg/sh4/Makefile.target create mode 100644 tests/tcg/sh4/float_convd.ref create mode 100644 tests/tcg/sh4/float_convs.ref create mode 100644 tests/tcg/sh4/float_madds.ref create mode 100644 tests/tcg/sh4/meson.build delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target delete mode 100644 tests/tcg/x86_64/Makefile.target create mode 100644 tests/tcg/x86_64/float_madds.ref create mode 100644 tests/tcg/x86_64/meson.build create mode 100644 tests/tcg/x86_64/system/meson.build delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target create mode 100644 tests/tcg/xtensa/meson.build delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
This series replaces TCG tests makefiles with meson, with the
goal of having something more readable and maintainable in the long term.
Also it closes the gap that tcg tests had with the rest of tests, by integrating
them with meson directly.
It covers all existing tests for all architectures, including
user/system/multiarch-user/multiarch-system. It implements all requirements
listed on original thread [1].
[1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
We also have for free:
- correct and complete dependencies for any test, including:
scripts, c.inc, headers, reference files and binaries/plugins.
- catch test declaration issues at configure time vs test time.
- proper data types for variables instead of string expansion with make.
Series first introduce the meson machinery needed in tests/tcg/meson.build, step
by step. Then it adds support for all existing archs. Finally, we remove
Makefiles and configure bits.
Usage:
```
make check-tcg
make check-tcg-aarch64-linux-user
make check-tcg-aarch64-softmmu
make tcg-tests
ninja clean
./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
```
A few items were left for further work (out of scope for this series):
- xtensaeb: didn't find how to cross compile for this architecture with what we
have now in container debian-xtensa-cross. Tips are welcome.
- tricore: implemented but reverted as all tests seem to hang. To be
investigated.
- riscv64/interruptedmemory.S is hanging. To be investigated.
- i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
match bare metal result) and is the slowest test we have. To be refactored and
fixed.
v3
--
- add all architectures
- reduce number of plugins tests (only add one test for each plugin from
multiarch pool)
- add depends for executable - allow to depend on a custom target for generated
headers (x86_64 mmx, avx)
- add new tests added since last version for aarch64 (mte + gpc)
- refactor series to keep all arch files at end
- add docker host architecture selection
v2
--
- s/mispell/misspell
- moved comment about why we remove 'lib' prefix for plugins
- if user declare a wrong entry in a dictionary, list possible keys
- build tests by default (with 'all' target), as long as cross compiler is
natively installed, to avoid triggering a container build.
- reword some comments based on reviewers feedback
- always declare all tests and avoid "per config" errors (no 'if' in arch files)
- move compiler feature and gdb version checks directly in tests/tcg/meson.build
- add support for cross containers
- add top target 'tcg-tests' to rebuild all tests
Pierrick Bouvier (91):
tests/tcg/multiarch/system/memory.c: remove unused variable
tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
input
tests/tcg/multiarch/plugin: rename check-plugin-output to
regex-compare
tests/tcg: introduce meson.build
tests/tcg/meson.build: introduce exe_name
tests/tcg/meson.build: introduce test_name
tests/tcg/meson.build: introduce cflags
tests/tcg/meson.build: introduce qemu_args
tests/tcg/meson.build: introduce env_var
tests/tcg/plugins: build list of test_plugins
tests/tcg/meson.build: introduce plugin_test
tests/tcg/meson.build: test gdb support and introduce gdb_arch
tests/tcg/meson.build: introduce gdb_test
tests/tcg/meson.build: add default flag for testing compiler support
tests/tcg/meson.build: introduce wrapper
tests/tcg/meson.build: introduce expected_output
tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
tests/tcg/meson.build: add wrapper run_with_input
tests/tcg/meson.build: add wrapper record_replay
tests/tcg/meson.build: add wrapper check_plugin_output
tests/tcg/meson.build: add logic to skip tests
tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
tests/tcg/meson.build: move gdb_arch support check
tests/tcg/meson.build: let test infrastructure detect compiler
tests/docker/docker.py: return error code if probe fails
tests/docker/docker.py: remove "Image is up to date" info
tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
tests/tcg/meson.build: introduce depends
tests/tcg/meson.build: add top-level 'tcg-tests' target
tests/tcg/multiarch: declare user tests
tests/tcg/multiarch: declare system tests
tests/tcg/meson.build: add generic plugin tests
tests/tcg/aarch64: user tests
tests/tcg/aarch64/system/gpc-test.c: remove unused variables
tests/tcg/aarch64: system tests
tests/tcg/aarch64_be: user tests
tests/tcg/alpha: add float reference files
tests/tcg/alpha: user tests
tests/tcg/alpha: system tests
tests/tcg/arm: user tests
tests/tcg/arm: system tests
tests/tcg/hexagon/overflow.c: add missing include
tests/tcg/hexagon: user tests
tests/tcg/multiarch/sha1.c: fix big endian implementation
tests/tcg/hppa: add float reference files
tests/tcg/hppa: user tests
tests/tcg/i386: add missing float reference files
tests/tcg/i386: user tests
tests/tcg/i386: system tests
tests/tcg/loongarch64: user tests
tests/tcg/loongarch64: system tests
tests/tcg/m68k: add float reference files
tests/tcg/m68k: user tests
scripts/probe-gdb-support.py: add mapping for mips architecture
tests/tcg/mips: add float reference files
test/tcg/mips: user tests
tests/tcg/mips64: add float reference files
tests/tcg/mips64: user tests
tests/tcg/mips64el: add float reference files
tests/tcg/mips64el: user tests
tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
toolchain
tests/tcg/or1k/test_addic.c: remove unused variables
tests/tcg/or1k/test_muli.c: remove set but unused variable
tests/tcg/or1k: add float reference files
plugins/api.c: identify or1k pc register and mark it as read only
tests/tcg/or1k: user tests
tests/tcg/ppc64: add float reference files
tests/tcg/ppc64: remove dependency on qemu/compiler.h
tests/tcg/ppc64: user tests
tests/tcg/ppc64le: add missing float reference file
tests/tcg/ppc64le: user tests
tests/tcg/riscv64: add float reference files
tests/tcg/riscv64: user tests
tests/tcg/riscv64: system tests
tests/tcg/s390x/head64.S: declare _exit symbol after main
tests/tcg/s390x: add float reference files
tests/tcg/s390x: user tests
tests/tcg/s390x: system tests
tests/tcg/sh4: add float reference files
tests/tcg/sh4: user tests
tests/tcg/tricore: system tests
Revert "tests/tcg/tricore: system tests"
tests/tcg/x86_64: add missing float reference file
tests/tcg/x86_64: user tests
tests/tcg/x86_64: system tests
tests/tcg/xtensa/crt.S: align .text section
tests/tcg/xtensa: system tests
tests: remove tcg tests machinery
tests/tcg: remove Makefiles
configure: remove --cross-cc* options
configure | 473 ---------
docs/devel/testing/main.rst | 22 +-
plugins/api.c | 2 +
scripts/probe-gdb-support.py | 1 +
tests/Makefile.include | 68 +-
tests/docker/docker.py | 4 +-
.../dockerfiles/debian-all-test-cross.docker | 16 +-
tests/lcitool/refresh | 107 +-
tests/meson.build | 2 +-
tests/tcg/Makefile.target | 281 -----
tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
tests/tcg/aarch64/Makefile.target | 198 ----
tests/tcg/aarch64/meson.build | 195 ++++
tests/tcg/aarch64/system/gpc-test.c | 5 -
tests/tcg/aarch64/system/meson.build | 108 ++
tests/tcg/aarch64_be/Makefile.target | 17 -
tests/tcg/aarch64_be/meson.build | 22 +
tests/tcg/alpha/Makefile.softmmu-target | 34 -
tests/tcg/alpha/Makefile.target | 18 -
tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
tests/tcg/alpha/meson.build | 55 +
tests/tcg/alpha/system/meson.build | 46 +
tests/tcg/arm/Makefile.softmmu-target | 80 --
tests/tcg/arm/Makefile.target | 87 --
tests/tcg/arm/meson.build | 80 ++
tests/tcg/arm/system/meson.build | 66 ++
tests/tcg/hexagon/Makefile.target | 146 ---
tests/tcg/hexagon/meson.build | 111 ++
tests/tcg/hexagon/overflow.c | 1 +
tests/tcg/hppa/Makefile.target | 14 -
tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
tests/tcg/hppa/meson.build | 22 +
tests/tcg/i386/Makefile.softmmu-target | 37 -
tests/tcg/i386/Makefile.target | 102 --
tests/tcg/i386/float_convd.conf | 988 ------------------
tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
tests/tcg/i386/meson.build | 58 +
tests/tcg/i386/system/meson.build | 48 +
tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
tests/tcg/loongarch64/Makefile.target | 20 -
tests/tcg/loongarch64/meson.build | 32 +
tests/tcg/loongarch64/system/meson.build | 47 +
tests/tcg/m68k/Makefile.target | 7 -
tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
tests/tcg/m68k/meson.build | 23 +
tests/tcg/meson.build | 447 ++++++++
tests/tcg/minilib/Makefile.target | 21 -
tests/tcg/mips/Makefile.target | 19 -
tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips/float_convs.ref | 748 +++++++++++++
tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips/meson.build | 25 +
tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
tests/tcg/mips/user/isa/r5900/Makefile | 32 -
tests/tcg/mips64/Makefile.target | 20 -
tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips64/meson.build | 27 +
tests/tcg/mips64el/Makefile.target | 8 -
tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips64el/meson.build | 14 +
tests/tcg/multiarch/Makefile.target | 233 -----
tests/tcg/multiarch/meson.build | 149 +++
.../multiarch/plugin/check-plugin-output.sh | 36 -
tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
tests/tcg/multiarch/sha1.c | 4 +-
tests/tcg/multiarch/sha1.ref | 1 +
.../multiarch/system/Makefile.softmmu-target | 81 --
tests/tcg/multiarch/system/memory.c | 3 +-
tests/tcg/multiarch/system/meson.build | 53 +
tests/tcg/or1k/Makefile | 71 --
tests/tcg/or1k/float_convd.ref | 247 +++++
tests/tcg/or1k/float_convs.ref | 187 ++++
tests/tcg/or1k/float_madds.ref | 192 ++++
tests/tcg/or1k/meson.build | 72 ++
tests/tcg/or1k/test_addic.c | 2 +-
tests/tcg/or1k/test_muli.c | 5 +-
tests/tcg/plugins/meson.build | 11 +-
tests/tcg/ppc64/Makefile.target | 63 --
tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
tests/tcg/ppc64/meson.build | 56 +
tests/tcg/ppc64/vector.c | 11 +-
tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
tests/tcg/ppc64le/Makefile.target | 7 -
tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/ppc64le/meson.build | 14 +
tests/tcg/riscv64/Makefile.softmmu-target | 45 -
tests/tcg/riscv64/Makefile.target | 20 -
tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
tests/tcg/riscv64/meson.build | 38 +
tests/tcg/riscv64/system/meson.build | 38 +
tests/tcg/s390x/Makefile.softmmu-target | 57 -
tests/tcg/s390x/Makefile.target | 127 ---
tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
tests/tcg/s390x/head64.S | 2 +
tests/tcg/s390x/meson.build | 140 +++
tests/tcg/s390x/system/meson.build | 92 ++
tests/tcg/scripts/check_plugin_output.sh | 25 +
tests/tcg/scripts/record_replay.sh | 16 +
.../scripts/run_and_check_forbidden_output.sh | 19 +
tests/tcg/scripts/run_and_diff.sh | 15 +
tests/tcg/scripts/run_with_input.sh | 12 +
tests/tcg/sh4/Makefile.target | 18 -
tests/tcg/sh4/float_convd.ref | 494 +++++++++
tests/tcg/sh4/float_convs.ref | 374 +++++++
tests/tcg/sh4/float_madds.ref | 384 +++++++
tests/tcg/sh4/meson.build | 25 +
tests/tcg/tricore/Makefile.softmmu-target | 53 -
tests/tcg/x86_64/Makefile.softmmu-target | 44 -
tests/tcg/x86_64/Makefile.target | 40 -
tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
tests/tcg/x86_64/meson.build | 83 ++
tests/tcg/x86_64/system/meson.build | 62 ++
tests/tcg/xtensa/Makefile.softmmu-target | 46 -
tests/tcg/xtensa/crt.S | 1 +
tests/tcg/xtensa/meson.build | 89 ++
tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
134 files changed, 30491 insertions(+), 4114 deletions(-)
delete mode 100644 tests/tcg/Makefile.target
delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/aarch64/Makefile.target
create mode 100644 tests/tcg/aarch64/meson.build
create mode 100644 tests/tcg/aarch64/system/meson.build
delete mode 100644 tests/tcg/aarch64_be/Makefile.target
create mode 100644 tests/tcg/aarch64_be/meson.build
delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
delete mode 100644 tests/tcg/alpha/Makefile.target
create mode 100644 tests/tcg/alpha/float_convd.ref
create mode 100644 tests/tcg/alpha/float_convs.ref
create mode 100644 tests/tcg/alpha/float_madds.ref
create mode 100644 tests/tcg/alpha/meson.build
create mode 100644 tests/tcg/alpha/system/meson.build
delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
delete mode 100644 tests/tcg/arm/Makefile.target
create mode 100644 tests/tcg/arm/meson.build
create mode 100644 tests/tcg/arm/system/meson.build
delete mode 100644 tests/tcg/hexagon/Makefile.target
create mode 100644 tests/tcg/hexagon/meson.build
delete mode 100644 tests/tcg/hppa/Makefile.target
create mode 100644 tests/tcg/hppa/float_convd.ref
create mode 100644 tests/tcg/hppa/float_convs.ref
create mode 100644 tests/tcg/hppa/float_madds.ref
create mode 100644 tests/tcg/hppa/meson.build
delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
delete mode 100644 tests/tcg/i386/Makefile.target
delete mode 100644 tests/tcg/i386/float_convd.conf
create mode 100644 tests/tcg/i386/float_convd.ref
create mode 100644 tests/tcg/i386/float_madds.ref
create mode 100644 tests/tcg/i386/meson.build
create mode 100644 tests/tcg/i386/system/meson.build
delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/loongarch64/Makefile.target
create mode 100644 tests/tcg/loongarch64/meson.build
create mode 100644 tests/tcg/loongarch64/system/meson.build
delete mode 100644 tests/tcg/m68k/Makefile.target
create mode 100644 tests/tcg/m68k/float_convd.ref
create mode 100644 tests/tcg/m68k/float_convs.ref
create mode 100644 tests/tcg/m68k/float_madds.ref
create mode 100644 tests/tcg/m68k/meson.build
create mode 100644 tests/tcg/meson.build
delete mode 100644 tests/tcg/minilib/Makefile.target
delete mode 100644 tests/tcg/mips/Makefile.target
create mode 100644 tests/tcg/mips/float_convd.ref
create mode 100644 tests/tcg/mips/float_convs.ref
create mode 100644 tests/tcg/mips/float_madds.ref
create mode 100644 tests/tcg/mips/meson.build
delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
delete mode 100644 tests/tcg/mips64/Makefile.target
create mode 100644 tests/tcg/mips64/float_convd.ref
create mode 100644 tests/tcg/mips64/float_convs.ref
create mode 100644 tests/tcg/mips64/float_madds.ref
create mode 100644 tests/tcg/mips64/meson.build
delete mode 100644 tests/tcg/mips64el/Makefile.target
create mode 100644 tests/tcg/mips64el/float_convd.ref
create mode 100644 tests/tcg/mips64el/float_convs.ref
create mode 100644 tests/tcg/mips64el/float_madds.ref
create mode 100644 tests/tcg/mips64el/meson.build
delete mode 100644 tests/tcg/multiarch/Makefile.target
create mode 100644 tests/tcg/multiarch/meson.build
delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
create mode 100644 tests/tcg/multiarch/sha1.ref
delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
create mode 100644 tests/tcg/multiarch/system/meson.build
delete mode 100644 tests/tcg/or1k/Makefile
create mode 100644 tests/tcg/or1k/float_convd.ref
create mode 100644 tests/tcg/or1k/float_convs.ref
create mode 100644 tests/tcg/or1k/float_madds.ref
create mode 100644 tests/tcg/or1k/meson.build
delete mode 100644 tests/tcg/ppc64/Makefile.target
create mode 100644 tests/tcg/ppc64/float_convd.ref
create mode 100644 tests/tcg/ppc64/float_convs.ref
create mode 100644 tests/tcg/ppc64/float_madds.ref
create mode 100644 tests/tcg/ppc64/meson.build
delete mode 100644 tests/tcg/ppc64le/Makefile.target
create mode 100644 tests/tcg/ppc64le/float_convd.ref
create mode 100644 tests/tcg/ppc64le/meson.build
delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
delete mode 100644 tests/tcg/riscv64/Makefile.target
create mode 100644 tests/tcg/riscv64/float_convd.ref
create mode 100644 tests/tcg/riscv64/float_convs.ref
create mode 100644 tests/tcg/riscv64/float_madds.ref
create mode 100644 tests/tcg/riscv64/meson.build
create mode 100644 tests/tcg/riscv64/system/meson.build
delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
delete mode 100644 tests/tcg/s390x/Makefile.target
create mode 100644 tests/tcg/s390x/float_convd.ref
create mode 100644 tests/tcg/s390x/float_convs.ref
create mode 100644 tests/tcg/s390x/float_madds.ref
create mode 100644 tests/tcg/s390x/meson.build
create mode 100644 tests/tcg/s390x/system/meson.build
create mode 100755 tests/tcg/scripts/check_plugin_output.sh
create mode 100755 tests/tcg/scripts/record_replay.sh
create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
create mode 100755 tests/tcg/scripts/run_and_diff.sh
create mode 100755 tests/tcg/scripts/run_with_input.sh
delete mode 100644 tests/tcg/sh4/Makefile.target
create mode 100644 tests/tcg/sh4/float_convd.ref
create mode 100644 tests/tcg/sh4/float_convs.ref
create mode 100644 tests/tcg/sh4/float_madds.ref
create mode 100644 tests/tcg/sh4/meson.build
delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.target
create mode 100644 tests/tcg/x86_64/float_madds.ref
create mode 100644 tests/tcg/x86_64/meson.build
create mode 100644 tests/tcg/x86_64/system/meson.build
delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
create mode 100644 tests/tcg/xtensa/meson.build
delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
--
2.47.3
On 7/6/2026 3:32 PM, Pierrick Bouvier wrote: > This series replaces TCG tests makefiles with meson, with the > goal of having something more readable and maintainable in the long term. > Also it closes the gap that tcg tests had with the rest of tests, by integrating > them with meson directly. > > It covers all existing tests for all architectures, including > user/system/multiarch-user/multiarch-system. It implements all requirements > listed on original thread [1]. > > [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ > > We also have for free: > - correct and complete dependencies for any test, including: > scripts, c.inc, headers, reference files and binaries/plugins. > - catch test declaration issues at configure time vs test time. > - proper data types for variables instead of string expansion with make. > > Series first introduce the meson machinery needed in tests/tcg/meson.build, step > by step. Then it adds support for all existing archs. Finally, we remove > Makefiles and configure bits. > > Usage: > > ``` > make check-tcg > make check-tcg-aarch64-linux-user > make check-tcg-aarch64-softmmu > > make tcg-tests > > ninja clean > ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose > ``` > > A few items were left for further work (out of scope for this series): > - xtensaeb: didn't find how to cross compile for this architecture with what we > have now in container debian-xtensa-cross. Tips are welcome. > - tricore: implemented but reverted as all tests seem to hang. To be > investigated. > - riscv64/interruptedmemory.S is hanging. To be investigated. > - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not > match bare metal result) and is the slowest test we have. To be refactored and > fixed. > > v3 > -- > > - add all architectures > - reduce number of plugins tests (only add one test for each plugin from > multiarch pool) > - add depends for executable - allow to depend on a custom target for generated > headers (x86_64 mmx, avx) > - add new tests added since last version for aarch64 (mte + gpc) > - refactor series to keep all arch files at end > - add docker host architecture selection > > v2 > -- > > - s/mispell/misspell > - moved comment about why we remove 'lib' prefix for plugins > - if user declare a wrong entry in a dictionary, list possible keys > - build tests by default (with 'all' target), as long as cross compiler is > natively installed, to avoid triggering a container build. > - reword some comments based on reviewers feedback > - always declare all tests and avoid "per config" errors (no 'if' in arch files) > - move compiler feature and gdb version checks directly in tests/tcg/meson.build > - add support for cross containers > - add top target 'tcg-tests' to rebuild all tests > > Pierrick Bouvier (91): > tests/tcg/multiarch/system/memory.c: remove unused variable > tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as > input > tests/tcg/multiarch/plugin: rename check-plugin-output to > regex-compare > tests/tcg: introduce meson.build > tests/tcg/meson.build: introduce exe_name > tests/tcg/meson.build: introduce test_name > tests/tcg/meson.build: introduce cflags > tests/tcg/meson.build: introduce qemu_args > tests/tcg/meson.build: introduce env_var > tests/tcg/plugins: build list of test_plugins > tests/tcg/meson.build: introduce plugin_test > tests/tcg/meson.build: test gdb support and introduce gdb_arch > tests/tcg/meson.build: introduce gdb_test > tests/tcg/meson.build: add default flag for testing compiler support > tests/tcg/meson.build: introduce wrapper > tests/tcg/meson.build: introduce expected_output > tests/tcg/meson.build: add wrapper run_and_check_forbidden_output > tests/tcg/meson.build: add wrapper run_with_input > tests/tcg/meson.build: add wrapper record_replay > tests/tcg/meson.build: add wrapper check_plugin_output > tests/tcg/meson.build: add logic to skip tests > tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags > tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version > tests/tcg/meson.build: move gdb_arch support check > tests/tcg/meson.build: let test infrastructure detect compiler > tests/docker/docker.py: return error code if probe fails > tests/docker/docker.py: remove "Image is up to date" info > tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch > tests/tcg/meson.build: introduce depends > tests/tcg/meson.build: add top-level 'tcg-tests' target > tests/tcg/multiarch: declare user tests > tests/tcg/multiarch: declare system tests > tests/tcg/meson.build: add generic plugin tests > tests/tcg/aarch64: user tests > tests/tcg/aarch64/system/gpc-test.c: remove unused variables > tests/tcg/aarch64: system tests > tests/tcg/aarch64_be: user tests > tests/tcg/alpha: add float reference files > tests/tcg/alpha: user tests > tests/tcg/alpha: system tests > tests/tcg/arm: user tests > tests/tcg/arm: system tests > tests/tcg/hexagon/overflow.c: add missing include > tests/tcg/hexagon: user tests > tests/tcg/multiarch/sha1.c: fix big endian implementation > tests/tcg/hppa: add float reference files > tests/tcg/hppa: user tests > tests/tcg/i386: add missing float reference files > tests/tcg/i386: user tests > tests/tcg/i386: system tests > tests/tcg/loongarch64: user tests > tests/tcg/loongarch64: system tests > tests/tcg/m68k: add float reference files > tests/tcg/m68k: user tests > scripts/probe-gdb-support.py: add mapping for mips architecture > tests/tcg/mips: add float reference files > test/tcg/mips: user tests > tests/tcg/mips64: add float reference files > tests/tcg/mips64: user tests > tests/tcg/mips64el: add float reference files > tests/tcg/mips64el: user tests > tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k > toolchain > tests/tcg/or1k/test_addic.c: remove unused variables > tests/tcg/or1k/test_muli.c: remove set but unused variable > tests/tcg/or1k: add float reference files > plugins/api.c: identify or1k pc register and mark it as read only > tests/tcg/or1k: user tests > tests/tcg/ppc64: add float reference files > tests/tcg/ppc64: remove dependency on qemu/compiler.h > tests/tcg/ppc64: user tests > tests/tcg/ppc64le: add missing float reference file > tests/tcg/ppc64le: user tests > tests/tcg/riscv64: add float reference files > tests/tcg/riscv64: user tests > tests/tcg/riscv64: system tests > tests/tcg/s390x/head64.S: declare _exit symbol after main > tests/tcg/s390x: add float reference files > tests/tcg/s390x: user tests > tests/tcg/s390x: system tests > tests/tcg/sh4: add float reference files > tests/tcg/sh4: user tests > tests/tcg/tricore: system tests > Revert "tests/tcg/tricore: system tests" > tests/tcg/x86_64: add missing float reference file > tests/tcg/x86_64: user tests > tests/tcg/x86_64: system tests > tests/tcg/xtensa/crt.S: align .text section > tests/tcg/xtensa: system tests > tests: remove tcg tests machinery > tests/tcg: remove Makefiles > configure: remove --cross-cc* options > > configure | 473 --------- > docs/devel/testing/main.rst | 22 +- > plugins/api.c | 2 + > scripts/probe-gdb-support.py | 1 + > tests/Makefile.include | 68 +- > tests/docker/docker.py | 4 +- > .../dockerfiles/debian-all-test-cross.docker | 16 +- > tests/lcitool/refresh | 107 +- > tests/meson.build | 2 +- > tests/tcg/Makefile.target | 281 ----- > tests/tcg/aarch64/Makefile.softmmu-target | 147 --- > tests/tcg/aarch64/Makefile.target | 198 ---- > tests/tcg/aarch64/meson.build | 195 ++++ > tests/tcg/aarch64/system/gpc-test.c | 5 - > tests/tcg/aarch64/system/meson.build | 108 ++ > tests/tcg/aarch64_be/Makefile.target | 17 - > tests/tcg/aarch64_be/meson.build | 22 + > tests/tcg/alpha/Makefile.softmmu-target | 34 - > tests/tcg/alpha/Makefile.target | 18 - > tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ > tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ > tests/tcg/alpha/meson.build | 55 + > tests/tcg/alpha/system/meson.build | 46 + > tests/tcg/arm/Makefile.softmmu-target | 80 -- > tests/tcg/arm/Makefile.target | 87 -- > tests/tcg/arm/meson.build | 80 ++ > tests/tcg/arm/system/meson.build | 66 ++ > tests/tcg/hexagon/Makefile.target | 146 --- > tests/tcg/hexagon/meson.build | 111 ++ > tests/tcg/hexagon/overflow.c | 1 + > tests/tcg/hppa/Makefile.target | 14 - > tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ > tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ > tests/tcg/hppa/meson.build | 22 + > tests/tcg/i386/Makefile.softmmu-target | 37 - > tests/tcg/i386/Makefile.target | 102 -- > tests/tcg/i386/float_convd.conf | 988 ------------------ > tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ > tests/tcg/i386/meson.build | 58 + > tests/tcg/i386/system/meson.build | 48 + > tests/tcg/loongarch64/Makefile.softmmu-target | 33 - > tests/tcg/loongarch64/Makefile.target | 20 - > tests/tcg/loongarch64/meson.build | 32 + > tests/tcg/loongarch64/system/meson.build | 47 + > tests/tcg/m68k/Makefile.target | 7 - > tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ > tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ > tests/tcg/m68k/meson.build | 23 + > tests/tcg/meson.build | 447 ++++++++ > tests/tcg/minilib/Makefile.target | 21 - > tests/tcg/mips/Makefile.target | 19 - > tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips/meson.build | 25 + > tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- > tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - > tests/tcg/mips/user/isa/r5900/Makefile | 32 - > tests/tcg/mips64/Makefile.target | 20 - > tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64/meson.build | 27 + > tests/tcg/mips64el/Makefile.target | 8 - > tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64el/meson.build | 14 + > tests/tcg/multiarch/Makefile.target | 233 ----- > tests/tcg/multiarch/meson.build | 149 +++ > .../multiarch/plugin/check-plugin-output.sh | 36 - > tests/tcg/multiarch/plugin/regex-compare.sh | 28 + > tests/tcg/multiarch/sha1.c | 4 +- > tests/tcg/multiarch/sha1.ref | 1 + > .../multiarch/system/Makefile.softmmu-target | 81 -- > tests/tcg/multiarch/system/memory.c | 3 +- > tests/tcg/multiarch/system/meson.build | 53 + > tests/tcg/or1k/Makefile | 71 -- > tests/tcg/or1k/float_convd.ref | 247 +++++ > tests/tcg/or1k/float_convs.ref | 187 ++++ > tests/tcg/or1k/float_madds.ref | 192 ++++ > tests/tcg/or1k/meson.build | 72 ++ > tests/tcg/or1k/test_addic.c | 2 +- > tests/tcg/or1k/test_muli.c | 5 +- > tests/tcg/plugins/meson.build | 11 +- > tests/tcg/ppc64/Makefile.target | 63 -- > tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ > tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/ppc64/meson.build | 56 + > tests/tcg/ppc64/vector.c | 11 +- > tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- > tests/tcg/ppc64le/Makefile.target | 7 - > tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64le/meson.build | 14 + > tests/tcg/riscv64/Makefile.softmmu-target | 45 - > tests/tcg/riscv64/Makefile.target | 20 - > tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ > tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/riscv64/meson.build | 38 + > tests/tcg/riscv64/system/meson.build | 38 + > tests/tcg/s390x/Makefile.softmmu-target | 57 - > tests/tcg/s390x/Makefile.target | 127 --- > tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ > tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ > tests/tcg/s390x/head64.S | 2 + > tests/tcg/s390x/meson.build | 140 +++ > tests/tcg/s390x/system/meson.build | 92 ++ > tests/tcg/scripts/check_plugin_output.sh | 25 + > tests/tcg/scripts/record_replay.sh | 16 + > .../scripts/run_and_check_forbidden_output.sh | 19 + > tests/tcg/scripts/run_and_diff.sh | 15 + > tests/tcg/scripts/run_with_input.sh | 12 + > tests/tcg/sh4/Makefile.target | 18 - > tests/tcg/sh4/float_convd.ref | 494 +++++++++ > tests/tcg/sh4/float_convs.ref | 374 +++++++ > tests/tcg/sh4/float_madds.ref | 384 +++++++ > tests/tcg/sh4/meson.build | 25 + > tests/tcg/tricore/Makefile.softmmu-target | 53 - > tests/tcg/x86_64/Makefile.softmmu-target | 44 - > tests/tcg/x86_64/Makefile.target | 40 - > tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/x86_64/meson.build | 83 ++ > tests/tcg/x86_64/system/meson.build | 62 ++ > tests/tcg/xtensa/Makefile.softmmu-target | 46 - > tests/tcg/xtensa/crt.S | 1 + > tests/tcg/xtensa/meson.build | 89 ++ > tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - > 134 files changed, 30491 insertions(+), 4114 deletions(-) > delete mode 100644 tests/tcg/Makefile.target > delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/aarch64/Makefile.target > create mode 100644 tests/tcg/aarch64/meson.build > create mode 100644 tests/tcg/aarch64/system/meson.build > delete mode 100644 tests/tcg/aarch64_be/Makefile.target > create mode 100644 tests/tcg/aarch64_be/meson.build > delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target > delete mode 100644 tests/tcg/alpha/Makefile.target > create mode 100644 tests/tcg/alpha/float_convd.ref > create mode 100644 tests/tcg/alpha/float_convs.ref > create mode 100644 tests/tcg/alpha/float_madds.ref > create mode 100644 tests/tcg/alpha/meson.build > create mode 100644 tests/tcg/alpha/system/meson.build > delete mode 100644 tests/tcg/arm/Makefile.softmmu-target > delete mode 100644 tests/tcg/arm/Makefile.target > create mode 100644 tests/tcg/arm/meson.build > create mode 100644 tests/tcg/arm/system/meson.build > delete mode 100644 tests/tcg/hexagon/Makefile.target > create mode 100644 tests/tcg/hexagon/meson.build > delete mode 100644 tests/tcg/hppa/Makefile.target > create mode 100644 tests/tcg/hppa/float_convd.ref > create mode 100644 tests/tcg/hppa/float_convs.ref > create mode 100644 tests/tcg/hppa/float_madds.ref > create mode 100644 tests/tcg/hppa/meson.build > delete mode 100644 tests/tcg/i386/Makefile.softmmu-target > delete mode 100644 tests/tcg/i386/Makefile.target > delete mode 100644 tests/tcg/i386/float_convd.conf > create mode 100644 tests/tcg/i386/float_convd.ref > create mode 100644 tests/tcg/i386/float_madds.ref > create mode 100644 tests/tcg/i386/meson.build > create mode 100644 tests/tcg/i386/system/meson.build > delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/loongarch64/Makefile.target > create mode 100644 tests/tcg/loongarch64/meson.build > create mode 100644 tests/tcg/loongarch64/system/meson.build > delete mode 100644 tests/tcg/m68k/Makefile.target > create mode 100644 tests/tcg/m68k/float_convd.ref > create mode 100644 tests/tcg/m68k/float_convs.ref > create mode 100644 tests/tcg/m68k/float_madds.ref > create mode 100644 tests/tcg/m68k/meson.build > create mode 100644 tests/tcg/meson.build > delete mode 100644 tests/tcg/minilib/Makefile.target > delete mode 100644 tests/tcg/mips/Makefile.target > create mode 100644 tests/tcg/mips/float_convd.ref > create mode 100644 tests/tcg/mips/float_convs.ref > create mode 100644 tests/tcg/mips/float_madds.ref > create mode 100644 tests/tcg/mips/meson.build > delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile > delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile > delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile > delete mode 100644 tests/tcg/mips64/Makefile.target > create mode 100644 tests/tcg/mips64/float_convd.ref > create mode 100644 tests/tcg/mips64/float_convs.ref > create mode 100644 tests/tcg/mips64/float_madds.ref > create mode 100644 tests/tcg/mips64/meson.build > delete mode 100644 tests/tcg/mips64el/Makefile.target > create mode 100644 tests/tcg/mips64el/float_convd.ref > create mode 100644 tests/tcg/mips64el/float_convs.ref > create mode 100644 tests/tcg/mips64el/float_madds.ref > create mode 100644 tests/tcg/mips64el/meson.build > delete mode 100644 tests/tcg/multiarch/Makefile.target > create mode 100644 tests/tcg/multiarch/meson.build > delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh > create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh > create mode 100644 tests/tcg/multiarch/sha1.ref > delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target > create mode 100644 tests/tcg/multiarch/system/meson.build > delete mode 100644 tests/tcg/or1k/Makefile > create mode 100644 tests/tcg/or1k/float_convd.ref > create mode 100644 tests/tcg/or1k/float_convs.ref > create mode 100644 tests/tcg/or1k/float_madds.ref > create mode 100644 tests/tcg/or1k/meson.build > delete mode 100644 tests/tcg/ppc64/Makefile.target > create mode 100644 tests/tcg/ppc64/float_convd.ref > create mode 100644 tests/tcg/ppc64/float_convs.ref > create mode 100644 tests/tcg/ppc64/float_madds.ref > create mode 100644 tests/tcg/ppc64/meson.build > delete mode 100644 tests/tcg/ppc64le/Makefile.target > create mode 100644 tests/tcg/ppc64le/float_convd.ref > create mode 100644 tests/tcg/ppc64le/meson.build > delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target > delete mode 100644 tests/tcg/riscv64/Makefile.target > create mode 100644 tests/tcg/riscv64/float_convd.ref > create mode 100644 tests/tcg/riscv64/float_convs.ref > create mode 100644 tests/tcg/riscv64/float_madds.ref > create mode 100644 tests/tcg/riscv64/meson.build > create mode 100644 tests/tcg/riscv64/system/meson.build > delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target > delete mode 100644 tests/tcg/s390x/Makefile.target > create mode 100644 tests/tcg/s390x/float_convd.ref > create mode 100644 tests/tcg/s390x/float_convs.ref > create mode 100644 tests/tcg/s390x/float_madds.ref > create mode 100644 tests/tcg/s390x/meson.build > create mode 100644 tests/tcg/s390x/system/meson.build > create mode 100755 tests/tcg/scripts/check_plugin_output.sh > create mode 100755 tests/tcg/scripts/record_replay.sh > create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh > create mode 100755 tests/tcg/scripts/run_and_diff.sh > create mode 100755 tests/tcg/scripts/run_with_input.sh > delete mode 100644 tests/tcg/sh4/Makefile.target > create mode 100644 tests/tcg/sh4/float_convd.ref > create mode 100644 tests/tcg/sh4/float_convs.ref > create mode 100644 tests/tcg/sh4/float_madds.ref > create mode 100644 tests/tcg/sh4/meson.build > delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.target > create mode 100644 tests/tcg/x86_64/float_madds.ref > create mode 100644 tests/tcg/x86_64/meson.build > create mode 100644 tests/tcg/x86_64/system/meson.build > delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target > create mode 100644 tests/tcg/xtensa/meson.build > delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target > Series is now feature complete, as it covers all architectures, so feel free to review it in the patches order. Thanks, Pierrick
On 7/7/26 00:32, Pierrick Bouvier wrote:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>
Seems like something is wrong with cross-compiler detection now.
On Fedora I get:
FAILED: tests/tcg/s390x-softmmu-memory.test
/usr/lib64/ccache/s390x-linux-gnu-gcc
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/multiarch/system/memory.c
-o tests/tcg/s390x-softmmu-memory.test -static -MMD -MF
tests/tcg/s390x-softmmu-memory.d -Wall -Werror -O0 -g
-fno-strict-aliasing -nostdlib -I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/s390x/system/../../minilib
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/s390x/system/../../minilib/printf.c
-I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl
-I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include
-march=z13 ../tests/tcg/s390x/system/../head64.S
../tests/tcg/s390x/system/../console.c -DCHECK_UNALIGNED=0
In file included from
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/multiarch/system/memory.c:15:
/usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
stdint.h: No such file or directory
11 | # include_next <stdint.h>
| ^~~~~~~~~~
The cross-compiler situation on Fedora is that they ship the
cross-compiler itself, but no userspace headers, so it's usable
only for kernel builds. In this case QEMU should fall back to Docker,
which works for me on master, but not with this series.
On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote: > > > On 7/7/26 00:32, Pierrick Bouvier wrote: >> This series replaces TCG tests makefiles with meson, with the >> goal of having something more readable and maintainable in the long term. >> Also it closes the gap that tcg tests had with the rest of tests, by >> integrating >> them with meson directly. >> >> It covers all existing tests for all architectures, including >> user/system/multiarch-user/multiarch-system. It implements all >> requirements >> listed on original thread [1]. >> >> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ >> >> We also have for free: >> - correct and complete dependencies for any test, including: >> scripts, c.inc, headers, reference files and binaries/plugins. >> - catch test declaration issues at configure time vs test time. >> - proper data types for variables instead of string expansion with make. >> >> Series first introduce the meson machinery needed in tests/tcg/ >> meson.build, step >> by step. Then it adds support for all existing archs. Finally, we remove >> Makefiles and configure bits. >> >> Usage: >> >> ``` >> make check-tcg >> make check-tcg-aarch64-linux-user >> make check-tcg-aarch64-softmmu >> >> make tcg-tests >> >> ninja clean >> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose >> ``` >> >> A few items were left for further work (out of scope for this series): >> - xtensaeb: didn't find how to cross compile for this architecture >> with what we >> have now in container debian-xtensa-cross. Tips are welcome. >> - tricore: implemented but reverted as all tests seem to hang. To be >> investigated. >> - riscv64/interruptedmemory.S is hanging. To be investigated. >> - i386/test-i386-fprem.c is deactivated for now. It's broken (output >> does not >> match bare metal result) and is the slowest test we have. To be >> refactored and >> fixed. >> >> v3 >> -- >> >> - add all architectures >> - reduce number of plugins tests (only add one test for each plugin from >> multiarch pool) >> - add depends for executable - allow to depend on a custom target for >> generated >> headers (x86_64 mmx, avx) >> - add new tests added since last version for aarch64 (mte + gpc) >> - refactor series to keep all arch files at end >> - add docker host architecture selection >> >> v2 >> -- >> >> - s/mispell/misspell >> - moved comment about why we remove 'lib' prefix for plugins >> - if user declare a wrong entry in a dictionary, list possible keys >> - build tests by default (with 'all' target), as long as cross >> compiler is >> natively installed, to avoid triggering a container build. >> - reword some comments based on reviewers feedback >> - always declare all tests and avoid "per config" errors (no 'if' in >> arch files) >> - move compiler feature and gdb version checks directly in tests/tcg/ >> meson.build >> - add support for cross containers >> - add top target 'tcg-tests' to rebuild all tests >> >> Pierrick Bouvier (91): >> tests/tcg/multiarch/system/memory.c: remove unused variable >> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as >> input >> tests/tcg/multiarch/plugin: rename check-plugin-output to >> regex-compare >> tests/tcg: introduce meson.build >> tests/tcg/meson.build: introduce exe_name >> tests/tcg/meson.build: introduce test_name >> tests/tcg/meson.build: introduce cflags >> tests/tcg/meson.build: introduce qemu_args >> tests/tcg/meson.build: introduce env_var >> tests/tcg/plugins: build list of test_plugins >> tests/tcg/meson.build: introduce plugin_test >> tests/tcg/meson.build: test gdb support and introduce gdb_arch >> tests/tcg/meson.build: introduce gdb_test >> tests/tcg/meson.build: add default flag for testing compiler support >> tests/tcg/meson.build: introduce wrapper >> tests/tcg/meson.build: introduce expected_output >> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output >> tests/tcg/meson.build: add wrapper run_with_input >> tests/tcg/meson.build: add wrapper record_replay >> tests/tcg/meson.build: add wrapper check_plugin_output >> tests/tcg/meson.build: add logic to skip tests >> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags >> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version >> tests/tcg/meson.build: move gdb_arch support check >> tests/tcg/meson.build: let test infrastructure detect compiler >> tests/docker/docker.py: return error code if probe fails >> tests/docker/docker.py: remove "Image is up to date" info >> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch >> tests/tcg/meson.build: introduce depends >> tests/tcg/meson.build: add top-level 'tcg-tests' target >> tests/tcg/multiarch: declare user tests >> tests/tcg/multiarch: declare system tests >> tests/tcg/meson.build: add generic plugin tests >> tests/tcg/aarch64: user tests >> tests/tcg/aarch64/system/gpc-test.c: remove unused variables >> tests/tcg/aarch64: system tests >> tests/tcg/aarch64_be: user tests >> tests/tcg/alpha: add float reference files >> tests/tcg/alpha: user tests >> tests/tcg/alpha: system tests >> tests/tcg/arm: user tests >> tests/tcg/arm: system tests >> tests/tcg/hexagon/overflow.c: add missing include >> tests/tcg/hexagon: user tests >> tests/tcg/multiarch/sha1.c: fix big endian implementation >> tests/tcg/hppa: add float reference files >> tests/tcg/hppa: user tests >> tests/tcg/i386: add missing float reference files >> tests/tcg/i386: user tests >> tests/tcg/i386: system tests >> tests/tcg/loongarch64: user tests >> tests/tcg/loongarch64: system tests >> tests/tcg/m68k: add float reference files >> tests/tcg/m68k: user tests >> scripts/probe-gdb-support.py: add mapping for mips architecture >> tests/tcg/mips: add float reference files >> test/tcg/mips: user tests >> tests/tcg/mips64: add float reference files >> tests/tcg/mips64: user tests >> tests/tcg/mips64el: add float reference files >> tests/tcg/mips64el: user tests >> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k >> toolchain >> tests/tcg/or1k/test_addic.c: remove unused variables >> tests/tcg/or1k/test_muli.c: remove set but unused variable >> tests/tcg/or1k: add float reference files >> plugins/api.c: identify or1k pc register and mark it as read only >> tests/tcg/or1k: user tests >> tests/tcg/ppc64: add float reference files >> tests/tcg/ppc64: remove dependency on qemu/compiler.h >> tests/tcg/ppc64: user tests >> tests/tcg/ppc64le: add missing float reference file >> tests/tcg/ppc64le: user tests >> tests/tcg/riscv64: add float reference files >> tests/tcg/riscv64: user tests >> tests/tcg/riscv64: system tests >> tests/tcg/s390x/head64.S: declare _exit symbol after main >> tests/tcg/s390x: add float reference files >> tests/tcg/s390x: user tests >> tests/tcg/s390x: system tests >> tests/tcg/sh4: add float reference files >> tests/tcg/sh4: user tests >> tests/tcg/tricore: system tests >> Revert "tests/tcg/tricore: system tests" >> tests/tcg/x86_64: add missing float reference file >> tests/tcg/x86_64: user tests >> tests/tcg/x86_64: system tests >> tests/tcg/xtensa/crt.S: align .text section >> tests/tcg/xtensa: system tests >> tests: remove tcg tests machinery >> tests/tcg: remove Makefiles >> configure: remove --cross-cc* options >> >> configure | 473 --------- >> docs/devel/testing/main.rst | 22 +- >> plugins/api.c | 2 + >> scripts/probe-gdb-support.py | 1 + >> tests/Makefile.include | 68 +- >> tests/docker/docker.py | 4 +- >> .../dockerfiles/debian-all-test-cross.docker | 16 +- >> tests/lcitool/refresh | 107 +- >> tests/meson.build | 2 +- >> tests/tcg/Makefile.target | 281 ----- >> tests/tcg/aarch64/Makefile.softmmu-target | 147 --- >> tests/tcg/aarch64/Makefile.target | 198 ---- >> tests/tcg/aarch64/meson.build | 195 ++++ >> tests/tcg/aarch64/system/gpc-test.c | 5 - >> tests/tcg/aarch64/system/meson.build | 108 ++ >> tests/tcg/aarch64_be/Makefile.target | 17 - >> tests/tcg/aarch64_be/meson.build | 22 + >> tests/tcg/alpha/Makefile.softmmu-target | 34 - >> tests/tcg/alpha/Makefile.target | 18 - >> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ >> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/alpha/meson.build | 55 + >> tests/tcg/alpha/system/meson.build | 46 + >> tests/tcg/arm/Makefile.softmmu-target | 80 -- >> tests/tcg/arm/Makefile.target | 87 -- >> tests/tcg/arm/meson.build | 80 ++ >> tests/tcg/arm/system/meson.build | 66 ++ >> tests/tcg/hexagon/Makefile.target | 146 --- >> tests/tcg/hexagon/meson.build | 111 ++ >> tests/tcg/hexagon/overflow.c | 1 + >> tests/tcg/hppa/Makefile.target | 14 - >> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ >> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/hppa/meson.build | 22 + >> tests/tcg/i386/Makefile.softmmu-target | 37 - >> tests/tcg/i386/Makefile.target | 102 -- >> tests/tcg/i386/float_convd.conf | 988 ------------------ >> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/i386/meson.build | 58 + >> tests/tcg/i386/system/meson.build | 48 + >> tests/tcg/loongarch64/Makefile.softmmu-target | 33 - >> tests/tcg/loongarch64/Makefile.target | 20 - >> tests/tcg/loongarch64/meson.build | 32 + >> tests/tcg/loongarch64/system/meson.build | 47 + >> tests/tcg/m68k/Makefile.target | 7 - >> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ >> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/m68k/meson.build | 23 + >> tests/tcg/meson.build | 447 ++++++++ >> tests/tcg/minilib/Makefile.target | 21 - >> tests/tcg/mips/Makefile.target | 19 - >> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips/meson.build | 25 + >> tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- >> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - >> tests/tcg/mips/user/isa/r5900/Makefile | 32 - >> tests/tcg/mips64/Makefile.target | 20 - >> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips64/meson.build | 27 + >> tests/tcg/mips64el/Makefile.target | 8 - >> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips64el/meson.build | 14 + >> tests/tcg/multiarch/Makefile.target | 233 ----- >> tests/tcg/multiarch/meson.build | 149 +++ >> .../multiarch/plugin/check-plugin-output.sh | 36 - >> tests/tcg/multiarch/plugin/regex-compare.sh | 28 + >> tests/tcg/multiarch/sha1.c | 4 +- >> tests/tcg/multiarch/sha1.ref | 1 + >> .../multiarch/system/Makefile.softmmu-target | 81 -- >> tests/tcg/multiarch/system/memory.c | 3 +- >> tests/tcg/multiarch/system/meson.build | 53 + >> tests/tcg/or1k/Makefile | 71 -- >> tests/tcg/or1k/float_convd.ref | 247 +++++ >> tests/tcg/or1k/float_convs.ref | 187 ++++ >> tests/tcg/or1k/float_madds.ref | 192 ++++ >> tests/tcg/or1k/meson.build | 72 ++ >> tests/tcg/or1k/test_addic.c | 2 +- >> tests/tcg/or1k/test_muli.c | 5 +- >> tests/tcg/plugins/meson.build | 11 +- >> tests/tcg/ppc64/Makefile.target | 63 -- >> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/ppc64/meson.build | 56 + >> tests/tcg/ppc64/vector.c | 11 +- >> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- >> tests/tcg/ppc64le/Makefile.target | 7 - >> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/ppc64le/meson.build | 14 + >> tests/tcg/riscv64/Makefile.softmmu-target | 45 - >> tests/tcg/riscv64/Makefile.target | 20 - >> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/riscv64/meson.build | 38 + >> tests/tcg/riscv64/system/meson.build | 38 + >> tests/tcg/s390x/Makefile.softmmu-target | 57 - >> tests/tcg/s390x/Makefile.target | 127 --- >> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ >> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/s390x/head64.S | 2 + >> tests/tcg/s390x/meson.build | 140 +++ >> tests/tcg/s390x/system/meson.build | 92 ++ >> tests/tcg/scripts/check_plugin_output.sh | 25 + >> tests/tcg/scripts/record_replay.sh | 16 + >> .../scripts/run_and_check_forbidden_output.sh | 19 + >> tests/tcg/scripts/run_and_diff.sh | 15 + >> tests/tcg/scripts/run_with_input.sh | 12 + >> tests/tcg/sh4/Makefile.target | 18 - >> tests/tcg/sh4/float_convd.ref | 494 +++++++++ >> tests/tcg/sh4/float_convs.ref | 374 +++++++ >> tests/tcg/sh4/float_madds.ref | 384 +++++++ >> tests/tcg/sh4/meson.build | 25 + >> tests/tcg/tricore/Makefile.softmmu-target | 53 - >> tests/tcg/x86_64/Makefile.softmmu-target | 44 - >> tests/tcg/x86_64/Makefile.target | 40 - >> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/x86_64/meson.build | 83 ++ >> tests/tcg/x86_64/system/meson.build | 62 ++ >> tests/tcg/xtensa/Makefile.softmmu-target | 46 - >> tests/tcg/xtensa/crt.S | 1 + >> tests/tcg/xtensa/meson.build | 89 ++ >> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - >> 134 files changed, 30491 insertions(+), 4114 deletions(-) >> delete mode 100644 tests/tcg/Makefile.target >> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/aarch64/Makefile.target >> create mode 100644 tests/tcg/aarch64/meson.build >> create mode 100644 tests/tcg/aarch64/system/meson.build >> delete mode 100644 tests/tcg/aarch64_be/Makefile.target >> create mode 100644 tests/tcg/aarch64_be/meson.build >> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target >> delete mode 100644 tests/tcg/alpha/Makefile.target >> create mode 100644 tests/tcg/alpha/float_convd.ref >> create mode 100644 tests/tcg/alpha/float_convs.ref >> create mode 100644 tests/tcg/alpha/float_madds.ref >> create mode 100644 tests/tcg/alpha/meson.build >> create mode 100644 tests/tcg/alpha/system/meson.build >> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target >> delete mode 100644 tests/tcg/arm/Makefile.target >> create mode 100644 tests/tcg/arm/meson.build >> create mode 100644 tests/tcg/arm/system/meson.build >> delete mode 100644 tests/tcg/hexagon/Makefile.target >> create mode 100644 tests/tcg/hexagon/meson.build >> delete mode 100644 tests/tcg/hppa/Makefile.target >> create mode 100644 tests/tcg/hppa/float_convd.ref >> create mode 100644 tests/tcg/hppa/float_convs.ref >> create mode 100644 tests/tcg/hppa/float_madds.ref >> create mode 100644 tests/tcg/hppa/meson.build >> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target >> delete mode 100644 tests/tcg/i386/Makefile.target >> delete mode 100644 tests/tcg/i386/float_convd.conf >> create mode 100644 tests/tcg/i386/float_convd.ref >> create mode 100644 tests/tcg/i386/float_madds.ref >> create mode 100644 tests/tcg/i386/meson.build >> create mode 100644 tests/tcg/i386/system/meson.build >> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/loongarch64/Makefile.target >> create mode 100644 tests/tcg/loongarch64/meson.build >> create mode 100644 tests/tcg/loongarch64/system/meson.build >> delete mode 100644 tests/tcg/m68k/Makefile.target >> create mode 100644 tests/tcg/m68k/float_convd.ref >> create mode 100644 tests/tcg/m68k/float_convs.ref >> create mode 100644 tests/tcg/m68k/float_madds.ref >> create mode 100644 tests/tcg/m68k/meson.build >> create mode 100644 tests/tcg/meson.build >> delete mode 100644 tests/tcg/minilib/Makefile.target >> delete mode 100644 tests/tcg/mips/Makefile.target >> create mode 100644 tests/tcg/mips/float_convd.ref >> create mode 100644 tests/tcg/mips/float_convs.ref >> create mode 100644 tests/tcg/mips/float_madds.ref >> create mode 100644 tests/tcg/mips/meson.build >> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile >> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile >> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile >> delete mode 100644 tests/tcg/mips64/Makefile.target >> create mode 100644 tests/tcg/mips64/float_convd.ref >> create mode 100644 tests/tcg/mips64/float_convs.ref >> create mode 100644 tests/tcg/mips64/float_madds.ref >> create mode 100644 tests/tcg/mips64/meson.build >> delete mode 100644 tests/tcg/mips64el/Makefile.target >> create mode 100644 tests/tcg/mips64el/float_convd.ref >> create mode 100644 tests/tcg/mips64el/float_convs.ref >> create mode 100644 tests/tcg/mips64el/float_madds.ref >> create mode 100644 tests/tcg/mips64el/meson.build >> delete mode 100644 tests/tcg/multiarch/Makefile.target >> create mode 100644 tests/tcg/multiarch/meson.build >> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh >> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh >> create mode 100644 tests/tcg/multiarch/sha1.ref >> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target >> create mode 100644 tests/tcg/multiarch/system/meson.build >> delete mode 100644 tests/tcg/or1k/Makefile >> create mode 100644 tests/tcg/or1k/float_convd.ref >> create mode 100644 tests/tcg/or1k/float_convs.ref >> create mode 100644 tests/tcg/or1k/float_madds.ref >> create mode 100644 tests/tcg/or1k/meson.build >> delete mode 100644 tests/tcg/ppc64/Makefile.target >> create mode 100644 tests/tcg/ppc64/float_convd.ref >> create mode 100644 tests/tcg/ppc64/float_convs.ref >> create mode 100644 tests/tcg/ppc64/float_madds.ref >> create mode 100644 tests/tcg/ppc64/meson.build >> delete mode 100644 tests/tcg/ppc64le/Makefile.target >> create mode 100644 tests/tcg/ppc64le/float_convd.ref >> create mode 100644 tests/tcg/ppc64le/meson.build >> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/riscv64/Makefile.target >> create mode 100644 tests/tcg/riscv64/float_convd.ref >> create mode 100644 tests/tcg/riscv64/float_convs.ref >> create mode 100644 tests/tcg/riscv64/float_madds.ref >> create mode 100644 tests/tcg/riscv64/meson.build >> create mode 100644 tests/tcg/riscv64/system/meson.build >> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target >> delete mode 100644 tests/tcg/s390x/Makefile.target >> create mode 100644 tests/tcg/s390x/float_convd.ref >> create mode 100644 tests/tcg/s390x/float_convs.ref >> create mode 100644 tests/tcg/s390x/float_madds.ref >> create mode 100644 tests/tcg/s390x/meson.build >> create mode 100644 tests/tcg/s390x/system/meson.build >> create mode 100755 tests/tcg/scripts/check_plugin_output.sh >> create mode 100755 tests/tcg/scripts/record_replay.sh >> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh >> create mode 100755 tests/tcg/scripts/run_and_diff.sh >> create mode 100755 tests/tcg/scripts/run_with_input.sh >> delete mode 100644 tests/tcg/sh4/Makefile.target >> create mode 100644 tests/tcg/sh4/float_convd.ref >> create mode 100644 tests/tcg/sh4/float_convs.ref >> create mode 100644 tests/tcg/sh4/float_madds.ref >> create mode 100644 tests/tcg/sh4/meson.build >> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target >> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/x86_64/Makefile.target >> create mode 100644 tests/tcg/x86_64/float_madds.ref >> create mode 100644 tests/tcg/x86_64/meson.build >> create mode 100644 tests/tcg/x86_64/system/meson.build >> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target >> create mode 100644 tests/tcg/xtensa/meson.build >> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target >> > > Seems like something is wrong with cross-compiler detection now. > On Fedora I get: > > FAILED: tests/tcg/s390x-softmmu-memory.test > /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu- > worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ > tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu- > memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall - > Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu- > worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ > tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu- > worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ > tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/ > qemu-worktrees/20260706223343.988769-1- > pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/ > home/iii/qemu-worktrees/20260706223343.988769-1- > pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include - > march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/ > system/../console.c -DCHECK_UNALIGNED=0 > In file included from /mnt/root/home/iii/qemu- > worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ > tests/tcg/multiarch/system/memory.c:15: > /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error: > stdint.h: No such file or directory > 11 | # include_next <stdint.h> > | ^~~~~~~~~~ > > The cross-compiler situation on Fedora is that they ship the > cross-compiler itself, but no userspace headers, so it's usable > only for kernel builds. In this case QEMU should fall back to Docker, > which works for me on master, but not with this series. Thanks for the report. I just tried that on debian for now. Also, for s390x, I noticed that some tests are relying on roms/SLOF/... headers, which are not available if submodules are not initialized. Probably another corner case to cover. I'll take a look at how we detected all this before, and gracefully fall back to docker in this case. Regards, Pierrick
On 08/07/2026 18.25, Pierrick Bouvier wrote:
> On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote:
>>
>>
>> On 7/7/26 00:32, Pierrick Bouvier wrote:
>>> This series replaces TCG tests makefiles with meson, with the
>>> goal of having something more readable and maintainable in the long term.
>>> Also it closes the gap that tcg tests had with the rest of tests, by
>>> integrating
>>> them with meson directly.
>>>
>>> It covers all existing tests for all architectures, including
>>> user/system/multiarch-user/multiarch-system. It implements all
>>> requirements
>>> listed on original thread [1].
>>>
>>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>>>
>>> We also have for free:
>>> - correct and complete dependencies for any test, including:
>>> scripts, c.inc, headers, reference files and binaries/plugins.
>>> - catch test declaration issues at configure time vs test time.
>>> - proper data types for variables instead of string expansion with make.
>>>
>>> Series first introduce the meson machinery needed in tests/tcg/
>>> meson.build, step
>>> by step. Then it adds support for all existing archs. Finally, we remove
>>> Makefiles and configure bits.
>>>
>>> Usage:
>>>
>>> ```
>>> make check-tcg
>>> make check-tcg-aarch64-linux-user
>>> make check-tcg-aarch64-softmmu
>>>
>>> make tcg-tests
>>>
>>> ninja clean
>>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
>>> ```
>>>
>>> A few items were left for further work (out of scope for this series):
>>> - xtensaeb: didn't find how to cross compile for this architecture
>>> with what we
>>> have now in container debian-xtensa-cross. Tips are welcome.
>>> - tricore: implemented but reverted as all tests seem to hang. To be
>>> investigated.
>>> - riscv64/interruptedmemory.S is hanging. To be investigated.
>>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output
>>> does not
>>> match bare metal result) and is the slowest test we have. To be
>>> refactored and
>>> fixed.
>>>
>>> v3
>>> --
>>>
>>> - add all architectures
>>> - reduce number of plugins tests (only add one test for each plugin from
>>> multiarch pool)
>>> - add depends for executable - allow to depend on a custom target for
>>> generated
>>> headers (x86_64 mmx, avx)
>>> - add new tests added since last version for aarch64 (mte + gpc)
>>> - refactor series to keep all arch files at end
>>> - add docker host architecture selection
>>>
>>> v2
>>> --
>>>
>>> - s/mispell/misspell
>>> - moved comment about why we remove 'lib' prefix for plugins
>>> - if user declare a wrong entry in a dictionary, list possible keys
>>> - build tests by default (with 'all' target), as long as cross
>>> compiler is
>>> natively installed, to avoid triggering a container build.
>>> - reword some comments based on reviewers feedback
>>> - always declare all tests and avoid "per config" errors (no 'if' in
>>> arch files)
>>> - move compiler feature and gdb version checks directly in tests/tcg/
>>> meson.build
>>> - add support for cross containers
>>> - add top target 'tcg-tests' to rebuild all tests
>>>
>>> Pierrick Bouvier (91):
>>> tests/tcg/multiarch/system/memory.c: remove unused variable
>>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
>>> input
>>> tests/tcg/multiarch/plugin: rename check-plugin-output to
>>> regex-compare
>>> tests/tcg: introduce meson.build
>>> tests/tcg/meson.build: introduce exe_name
>>> tests/tcg/meson.build: introduce test_name
>>> tests/tcg/meson.build: introduce cflags
>>> tests/tcg/meson.build: introduce qemu_args
>>> tests/tcg/meson.build: introduce env_var
>>> tests/tcg/plugins: build list of test_plugins
>>> tests/tcg/meson.build: introduce plugin_test
>>> tests/tcg/meson.build: test gdb support and introduce gdb_arch
>>> tests/tcg/meson.build: introduce gdb_test
>>> tests/tcg/meson.build: add default flag for testing compiler support
>>> tests/tcg/meson.build: introduce wrapper
>>> tests/tcg/meson.build: introduce expected_output
>>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
>>> tests/tcg/meson.build: add wrapper run_with_input
>>> tests/tcg/meson.build: add wrapper record_replay
>>> tests/tcg/meson.build: add wrapper check_plugin_output
>>> tests/tcg/meson.build: add logic to skip tests
>>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
>>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
>>> tests/tcg/meson.build: move gdb_arch support check
>>> tests/tcg/meson.build: let test infrastructure detect compiler
>>> tests/docker/docker.py: return error code if probe fails
>>> tests/docker/docker.py: remove "Image is up to date" info
>>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
>>> tests/tcg/meson.build: introduce depends
>>> tests/tcg/meson.build: add top-level 'tcg-tests' target
>>> tests/tcg/multiarch: declare user tests
>>> tests/tcg/multiarch: declare system tests
>>> tests/tcg/meson.build: add generic plugin tests
>>> tests/tcg/aarch64: user tests
>>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
>>> tests/tcg/aarch64: system tests
>>> tests/tcg/aarch64_be: user tests
>>> tests/tcg/alpha: add float reference files
>>> tests/tcg/alpha: user tests
>>> tests/tcg/alpha: system tests
>>> tests/tcg/arm: user tests
>>> tests/tcg/arm: system tests
>>> tests/tcg/hexagon/overflow.c: add missing include
>>> tests/tcg/hexagon: user tests
>>> tests/tcg/multiarch/sha1.c: fix big endian implementation
>>> tests/tcg/hppa: add float reference files
>>> tests/tcg/hppa: user tests
>>> tests/tcg/i386: add missing float reference files
>>> tests/tcg/i386: user tests
>>> tests/tcg/i386: system tests
>>> tests/tcg/loongarch64: user tests
>>> tests/tcg/loongarch64: system tests
>>> tests/tcg/m68k: add float reference files
>>> tests/tcg/m68k: user tests
>>> scripts/probe-gdb-support.py: add mapping for mips architecture
>>> tests/tcg/mips: add float reference files
>>> test/tcg/mips: user tests
>>> tests/tcg/mips64: add float reference files
>>> tests/tcg/mips64: user tests
>>> tests/tcg/mips64el: add float reference files
>>> tests/tcg/mips64el: user tests
>>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
>>> toolchain
>>> tests/tcg/or1k/test_addic.c: remove unused variables
>>> tests/tcg/or1k/test_muli.c: remove set but unused variable
>>> tests/tcg/or1k: add float reference files
>>> plugins/api.c: identify or1k pc register and mark it as read only
>>> tests/tcg/or1k: user tests
>>> tests/tcg/ppc64: add float reference files
>>> tests/tcg/ppc64: remove dependency on qemu/compiler.h
>>> tests/tcg/ppc64: user tests
>>> tests/tcg/ppc64le: add missing float reference file
>>> tests/tcg/ppc64le: user tests
>>> tests/tcg/riscv64: add float reference files
>>> tests/tcg/riscv64: user tests
>>> tests/tcg/riscv64: system tests
>>> tests/tcg/s390x/head64.S: declare _exit symbol after main
>>> tests/tcg/s390x: add float reference files
>>> tests/tcg/s390x: user tests
>>> tests/tcg/s390x: system tests
>>> tests/tcg/sh4: add float reference files
>>> tests/tcg/sh4: user tests
>>> tests/tcg/tricore: system tests
>>> Revert "tests/tcg/tricore: system tests"
>>> tests/tcg/x86_64: add missing float reference file
>>> tests/tcg/x86_64: user tests
>>> tests/tcg/x86_64: system tests
>>> tests/tcg/xtensa/crt.S: align .text section
>>> tests/tcg/xtensa: system tests
>>> tests: remove tcg tests machinery
>>> tests/tcg: remove Makefiles
>>> configure: remove --cross-cc* options
>>>
>>> configure | 473 ---------
>>> docs/devel/testing/main.rst | 22 +-
>>> plugins/api.c | 2 +
>>> scripts/probe-gdb-support.py | 1 +
>>> tests/Makefile.include | 68 +-
>>> tests/docker/docker.py | 4 +-
>>> .../dockerfiles/debian-all-test-cross.docker | 16 +-
>>> tests/lcitool/refresh | 107 +-
>>> tests/meson.build | 2 +-
>>> tests/tcg/Makefile.target | 281 -----
>>> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
>>> tests/tcg/aarch64/Makefile.target | 198 ----
>>> tests/tcg/aarch64/meson.build | 195 ++++
>>> tests/tcg/aarch64/system/gpc-test.c | 5 -
>>> tests/tcg/aarch64/system/meson.build | 108 ++
>>> tests/tcg/aarch64_be/Makefile.target | 17 -
>>> tests/tcg/aarch64_be/meson.build | 22 +
>>> tests/tcg/alpha/Makefile.softmmu-target | 34 -
>>> tests/tcg/alpha/Makefile.target | 18 -
>>> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/alpha/meson.build | 55 +
>>> tests/tcg/alpha/system/meson.build | 46 +
>>> tests/tcg/arm/Makefile.softmmu-target | 80 --
>>> tests/tcg/arm/Makefile.target | 87 --
>>> tests/tcg/arm/meson.build | 80 ++
>>> tests/tcg/arm/system/meson.build | 66 ++
>>> tests/tcg/hexagon/Makefile.target | 146 ---
>>> tests/tcg/hexagon/meson.build | 111 ++
>>> tests/tcg/hexagon/overflow.c | 1 +
>>> tests/tcg/hppa/Makefile.target | 14 -
>>> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/hppa/meson.build | 22 +
>>> tests/tcg/i386/Makefile.softmmu-target | 37 -
>>> tests/tcg/i386/Makefile.target | 102 --
>>> tests/tcg/i386/float_convd.conf | 988 ------------------
>>> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/i386/meson.build | 58 +
>>> tests/tcg/i386/system/meson.build | 48 +
>>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
>>> tests/tcg/loongarch64/Makefile.target | 20 -
>>> tests/tcg/loongarch64/meson.build | 32 +
>>> tests/tcg/loongarch64/system/meson.build | 47 +
>>> tests/tcg/m68k/Makefile.target | 7 -
>>> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/m68k/meson.build | 23 +
>>> tests/tcg/meson.build | 447 ++++++++
>>> tests/tcg/minilib/Makefile.target | 21 -
>>> tests/tcg/mips/Makefile.target | 19 -
>>> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips/meson.build | 25 +
>>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
>>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
>>> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
>>> tests/tcg/mips64/Makefile.target | 20 -
>>> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips64/meson.build | 27 +
>>> tests/tcg/mips64el/Makefile.target | 8 -
>>> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips64el/meson.build | 14 +
>>> tests/tcg/multiarch/Makefile.target | 233 -----
>>> tests/tcg/multiarch/meson.build | 149 +++
>>> .../multiarch/plugin/check-plugin-output.sh | 36 -
>>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
>>> tests/tcg/multiarch/sha1.c | 4 +-
>>> tests/tcg/multiarch/sha1.ref | 1 +
>>> .../multiarch/system/Makefile.softmmu-target | 81 --
>>> tests/tcg/multiarch/system/memory.c | 3 +-
>>> tests/tcg/multiarch/system/meson.build | 53 +
>>> tests/tcg/or1k/Makefile | 71 --
>>> tests/tcg/or1k/float_convd.ref | 247 +++++
>>> tests/tcg/or1k/float_convs.ref | 187 ++++
>>> tests/tcg/or1k/float_madds.ref | 192 ++++
>>> tests/tcg/or1k/meson.build | 72 ++
>>> tests/tcg/or1k/test_addic.c | 2 +-
>>> tests/tcg/or1k/test_muli.c | 5 +-
>>> tests/tcg/plugins/meson.build | 11 +-
>>> tests/tcg/ppc64/Makefile.target | 63 --
>>> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/ppc64/meson.build | 56 +
>>> tests/tcg/ppc64/vector.c | 11 +-
>>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
>>> tests/tcg/ppc64le/Makefile.target | 7 -
>>> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/ppc64le/meson.build | 14 +
>>> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
>>> tests/tcg/riscv64/Makefile.target | 20 -
>>> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/riscv64/meson.build | 38 +
>>> tests/tcg/riscv64/system/meson.build | 38 +
>>> tests/tcg/s390x/Makefile.softmmu-target | 57 -
>>> tests/tcg/s390x/Makefile.target | 127 ---
>>> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/s390x/head64.S | 2 +
>>> tests/tcg/s390x/meson.build | 140 +++
>>> tests/tcg/s390x/system/meson.build | 92 ++
>>> tests/tcg/scripts/check_plugin_output.sh | 25 +
>>> tests/tcg/scripts/record_replay.sh | 16 +
>>> .../scripts/run_and_check_forbidden_output.sh | 19 +
>>> tests/tcg/scripts/run_and_diff.sh | 15 +
>>> tests/tcg/scripts/run_with_input.sh | 12 +
>>> tests/tcg/sh4/Makefile.target | 18 -
>>> tests/tcg/sh4/float_convd.ref | 494 +++++++++
>>> tests/tcg/sh4/float_convs.ref | 374 +++++++
>>> tests/tcg/sh4/float_madds.ref | 384 +++++++
>>> tests/tcg/sh4/meson.build | 25 +
>>> tests/tcg/tricore/Makefile.softmmu-target | 53 -
>>> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
>>> tests/tcg/x86_64/Makefile.target | 40 -
>>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/x86_64/meson.build | 83 ++
>>> tests/tcg/x86_64/system/meson.build | 62 ++
>>> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
>>> tests/tcg/xtensa/crt.S | 1 +
>>> tests/tcg/xtensa/meson.build | 89 ++
>>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
>>> 134 files changed, 30491 insertions(+), 4114 deletions(-)
>>> delete mode 100644 tests/tcg/Makefile.target
>>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/aarch64/Makefile.target
>>> create mode 100644 tests/tcg/aarch64/meson.build
>>> create mode 100644 tests/tcg/aarch64/system/meson.build
>>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
>>> create mode 100644 tests/tcg/aarch64_be/meson.build
>>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/alpha/Makefile.target
>>> create mode 100644 tests/tcg/alpha/float_convd.ref
>>> create mode 100644 tests/tcg/alpha/float_convs.ref
>>> create mode 100644 tests/tcg/alpha/float_madds.ref
>>> create mode 100644 tests/tcg/alpha/meson.build
>>> create mode 100644 tests/tcg/alpha/system/meson.build
>>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/arm/Makefile.target
>>> create mode 100644 tests/tcg/arm/meson.build
>>> create mode 100644 tests/tcg/arm/system/meson.build
>>> delete mode 100644 tests/tcg/hexagon/Makefile.target
>>> create mode 100644 tests/tcg/hexagon/meson.build
>>> delete mode 100644 tests/tcg/hppa/Makefile.target
>>> create mode 100644 tests/tcg/hppa/float_convd.ref
>>> create mode 100644 tests/tcg/hppa/float_convs.ref
>>> create mode 100644 tests/tcg/hppa/float_madds.ref
>>> create mode 100644 tests/tcg/hppa/meson.build
>>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/i386/Makefile.target
>>> delete mode 100644 tests/tcg/i386/float_convd.conf
>>> create mode 100644 tests/tcg/i386/float_convd.ref
>>> create mode 100644 tests/tcg/i386/float_madds.ref
>>> create mode 100644 tests/tcg/i386/meson.build
>>> create mode 100644 tests/tcg/i386/system/meson.build
>>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/loongarch64/Makefile.target
>>> create mode 100644 tests/tcg/loongarch64/meson.build
>>> create mode 100644 tests/tcg/loongarch64/system/meson.build
>>> delete mode 100644 tests/tcg/m68k/Makefile.target
>>> create mode 100644 tests/tcg/m68k/float_convd.ref
>>> create mode 100644 tests/tcg/m68k/float_convs.ref
>>> create mode 100644 tests/tcg/m68k/float_madds.ref
>>> create mode 100644 tests/tcg/m68k/meson.build
>>> create mode 100644 tests/tcg/meson.build
>>> delete mode 100644 tests/tcg/minilib/Makefile.target
>>> delete mode 100644 tests/tcg/mips/Makefile.target
>>> create mode 100644 tests/tcg/mips/float_convd.ref
>>> create mode 100644 tests/tcg/mips/float_convs.ref
>>> create mode 100644 tests/tcg/mips/float_madds.ref
>>> create mode 100644 tests/tcg/mips/meson.build
>>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
>>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
>>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
>>> delete mode 100644 tests/tcg/mips64/Makefile.target
>>> create mode 100644 tests/tcg/mips64/float_convd.ref
>>> create mode 100644 tests/tcg/mips64/float_convs.ref
>>> create mode 100644 tests/tcg/mips64/float_madds.ref
>>> create mode 100644 tests/tcg/mips64/meson.build
>>> delete mode 100644 tests/tcg/mips64el/Makefile.target
>>> create mode 100644 tests/tcg/mips64el/float_convd.ref
>>> create mode 100644 tests/tcg/mips64el/float_convs.ref
>>> create mode 100644 tests/tcg/mips64el/float_madds.ref
>>> create mode 100644 tests/tcg/mips64el/meson.build
>>> delete mode 100644 tests/tcg/multiarch/Makefile.target
>>> create mode 100644 tests/tcg/multiarch/meson.build
>>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
>>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
>>> create mode 100644 tests/tcg/multiarch/sha1.ref
>>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
>>> create mode 100644 tests/tcg/multiarch/system/meson.build
>>> delete mode 100644 tests/tcg/or1k/Makefile
>>> create mode 100644 tests/tcg/or1k/float_convd.ref
>>> create mode 100644 tests/tcg/or1k/float_convs.ref
>>> create mode 100644 tests/tcg/or1k/float_madds.ref
>>> create mode 100644 tests/tcg/or1k/meson.build
>>> delete mode 100644 tests/tcg/ppc64/Makefile.target
>>> create mode 100644 tests/tcg/ppc64/float_convd.ref
>>> create mode 100644 tests/tcg/ppc64/float_convs.ref
>>> create mode 100644 tests/tcg/ppc64/float_madds.ref
>>> create mode 100644 tests/tcg/ppc64/meson.build
>>> delete mode 100644 tests/tcg/ppc64le/Makefile.target
>>> create mode 100644 tests/tcg/ppc64le/float_convd.ref
>>> create mode 100644 tests/tcg/ppc64le/meson.build
>>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/riscv64/Makefile.target
>>> create mode 100644 tests/tcg/riscv64/float_convd.ref
>>> create mode 100644 tests/tcg/riscv64/float_convs.ref
>>> create mode 100644 tests/tcg/riscv64/float_madds.ref
>>> create mode 100644 tests/tcg/riscv64/meson.build
>>> create mode 100644 tests/tcg/riscv64/system/meson.build
>>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/s390x/Makefile.target
>>> create mode 100644 tests/tcg/s390x/float_convd.ref
>>> create mode 100644 tests/tcg/s390x/float_convs.ref
>>> create mode 100644 tests/tcg/s390x/float_madds.ref
>>> create mode 100644 tests/tcg/s390x/meson.build
>>> create mode 100644 tests/tcg/s390x/system/meson.build
>>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
>>> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>>> create mode 100755 tests/tcg/scripts/run_with_input.sh
>>> delete mode 100644 tests/tcg/sh4/Makefile.target
>>> create mode 100644 tests/tcg/sh4/float_convd.ref
>>> create mode 100644 tests/tcg/sh4/float_convs.ref
>>> create mode 100644 tests/tcg/sh4/float_madds.ref
>>> create mode 100644 tests/tcg/sh4/meson.build
>>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/x86_64/Makefile.target
>>> create mode 100644 tests/tcg/x86_64/float_madds.ref
>>> create mode 100644 tests/tcg/x86_64/meson.build
>>> create mode 100644 tests/tcg/x86_64/system/meson.build
>>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
>>> create mode 100644 tests/tcg/xtensa/meson.build
>>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>>>
>>
>> Seems like something is wrong with cross-compiler detection now.
>> On Fedora I get:
>>
>> FAILED: tests/tcg/s390x-softmmu-memory.test
>> /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu-
>> memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall -
>> Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/
>> qemu-worktrees/20260706223343.988769-1-
>> pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/
>> home/iii/qemu-worktrees/20260706223343.988769-1-
>> pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include -
>> march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/
>> system/../console.c -DCHECK_UNALIGNED=0
>> In file included from /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/multiarch/system/memory.c:15:
>> /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
>> stdint.h: No such file or directory
>> 11 | # include_next <stdint.h>
>> | ^~~~~~~~~~
>>
>> The cross-compiler situation on Fedora is that they ship the
>> cross-compiler itself, but no userspace headers, so it's usable
>> only for kernel builds. In this case QEMU should fall back to Docker,
>> which works for me on master, but not with this series.
>
> Thanks for the report. I just tried that on debian for now.
>
> Also, for s390x, I noticed that some tests are relying on roms/SLOF/...
> headers, which are not available if submodules are not initialized.
> Probably another corner case to cover.
We've got some logic in the configure script that should always initialize
the roms/SLOF submodule when you build the s390x target:
if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
GIT=git "$source_path/scripts/git-submodule.sh"
"$git_submodules_action" roms/SLOF >> config.log 2>&1; then
Is that failing in your case?
Thomas
On 7/8/2026 11:56 AM, Thomas Huth wrote: > On 08/07/2026 18.25, Pierrick Bouvier wrote: >> On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote: >>> >>> >>> On 7/7/26 00:32, Pierrick Bouvier wrote: >>>> This series replaces TCG tests makefiles with meson, with the >>>> goal of having something more readable and maintainable in the long >>>> term. >>>> Also it closes the gap that tcg tests had with the rest of tests, by >>>> integrating >>>> them with meson directly. >>>> >>>> It covers all existing tests for all architectures, including >>>> user/system/multiarch-user/multiarch-system. It implements all >>>> requirements >>>> listed on original thread [1]. >>>> >>>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ >>>> >>>> We also have for free: >>>> - correct and complete dependencies for any test, including: >>>> scripts, c.inc, headers, reference files and binaries/plugins. >>>> - catch test declaration issues at configure time vs test time. >>>> - proper data types for variables instead of string expansion with >>>> make. >>>> >>>> Series first introduce the meson machinery needed in tests/tcg/ >>>> meson.build, step >>>> by step. Then it adds support for all existing archs. Finally, we >>>> remove >>>> Makefiles and configure bits. >>>> >>>> Usage: >>>> >>>> ``` >>>> make check-tcg >>>> make check-tcg-aarch64-linux-user >>>> make check-tcg-aarch64-softmmu >>>> >>>> make tcg-tests >>>> >>>> ninja clean >>>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose >>>> ``` >>>> >>>> A few items were left for further work (out of scope for this series): >>>> - xtensaeb: didn't find how to cross compile for this architecture >>>> with what we >>>> have now in container debian-xtensa-cross. Tips are welcome. >>>> - tricore: implemented but reverted as all tests seem to hang. To be >>>> investigated. >>>> - riscv64/interruptedmemory.S is hanging. To be investigated. >>>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output >>>> does not >>>> match bare metal result) and is the slowest test we have. To be >>>> refactored and >>>> fixed. >>>> >>>> v3 >>>> -- >>>> >>>> - add all architectures >>>> - reduce number of plugins tests (only add one test for each plugin >>>> from >>>> multiarch pool) >>>> - add depends for executable - allow to depend on a custom target for >>>> generated >>>> headers (x86_64 mmx, avx) >>>> - add new tests added since last version for aarch64 (mte + gpc) >>>> - refactor series to keep all arch files at end >>>> - add docker host architecture selection >>>> >>>> v2 >>>> -- >>>> >>>> - s/mispell/misspell >>>> - moved comment about why we remove 'lib' prefix for plugins >>>> - if user declare a wrong entry in a dictionary, list possible keys >>>> - build tests by default (with 'all' target), as long as cross >>>> compiler is >>>> natively installed, to avoid triggering a container build. >>>> - reword some comments based on reviewers feedback >>>> - always declare all tests and avoid "per config" errors (no 'if' in >>>> arch files) >>>> - move compiler feature and gdb version checks directly in tests/tcg/ >>>> meson.build >>>> - add support for cross containers >>>> - add top target 'tcg-tests' to rebuild all tests >>>> >>>> Pierrick Bouvier (91): >>>> tests/tcg/multiarch/system/memory.c: remove unused variable >>>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test >>>> output as >>>> input >>>> tests/tcg/multiarch/plugin: rename check-plugin-output to >>>> regex-compare >>>> tests/tcg: introduce meson.build >>>> tests/tcg/meson.build: introduce exe_name >>>> tests/tcg/meson.build: introduce test_name >>>> tests/tcg/meson.build: introduce cflags >>>> tests/tcg/meson.build: introduce qemu_args >>>> tests/tcg/meson.build: introduce env_var >>>> tests/tcg/plugins: build list of test_plugins >>>> tests/tcg/meson.build: introduce plugin_test >>>> tests/tcg/meson.build: test gdb support and introduce gdb_arch >>>> tests/tcg/meson.build: introduce gdb_test >>>> tests/tcg/meson.build: add default flag for testing compiler >>>> support >>>> tests/tcg/meson.build: introduce wrapper >>>> tests/tcg/meson.build: introduce expected_output >>>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output >>>> tests/tcg/meson.build: add wrapper run_with_input >>>> tests/tcg/meson.build: add wrapper record_replay >>>> tests/tcg/meson.build: add wrapper check_plugin_output >>>> tests/tcg/meson.build: add logic to skip tests >>>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags >>>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version >>>> tests/tcg/meson.build: move gdb_arch support check >>>> tests/tcg/meson.build: let test infrastructure detect compiler >>>> tests/docker/docker.py: return error code if probe fails >>>> tests/docker/docker.py: remove "Image is up to date" info >>>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch >>>> tests/tcg/meson.build: introduce depends >>>> tests/tcg/meson.build: add top-level 'tcg-tests' target >>>> tests/tcg/multiarch: declare user tests >>>> tests/tcg/multiarch: declare system tests >>>> tests/tcg/meson.build: add generic plugin tests >>>> tests/tcg/aarch64: user tests >>>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables >>>> tests/tcg/aarch64: system tests >>>> tests/tcg/aarch64_be: user tests >>>> tests/tcg/alpha: add float reference files >>>> tests/tcg/alpha: user tests >>>> tests/tcg/alpha: system tests >>>> tests/tcg/arm: user tests >>>> tests/tcg/arm: system tests >>>> tests/tcg/hexagon/overflow.c: add missing include >>>> tests/tcg/hexagon: user tests >>>> tests/tcg/multiarch/sha1.c: fix big endian implementation >>>> tests/tcg/hppa: add float reference files >>>> tests/tcg/hppa: user tests >>>> tests/tcg/i386: add missing float reference files >>>> tests/tcg/i386: user tests >>>> tests/tcg/i386: system tests >>>> tests/tcg/loongarch64: user tests >>>> tests/tcg/loongarch64: system tests >>>> tests/tcg/m68k: add float reference files >>>> tests/tcg/m68k: user tests >>>> scripts/probe-gdb-support.py: add mapping for mips architecture >>>> tests/tcg/mips: add float reference files >>>> test/tcg/mips: user tests >>>> tests/tcg/mips64: add float reference files >>>> tests/tcg/mips64: user tests >>>> tests/tcg/mips64el: add float reference files >>>> tests/tcg/mips64el: user tests >>>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k >>>> toolchain >>>> tests/tcg/or1k/test_addic.c: remove unused variables >>>> tests/tcg/or1k/test_muli.c: remove set but unused variable >>>> tests/tcg/or1k: add float reference files >>>> plugins/api.c: identify or1k pc register and mark it as read only >>>> tests/tcg/or1k: user tests >>>> tests/tcg/ppc64: add float reference files >>>> tests/tcg/ppc64: remove dependency on qemu/compiler.h >>>> tests/tcg/ppc64: user tests >>>> tests/tcg/ppc64le: add missing float reference file >>>> tests/tcg/ppc64le: user tests >>>> tests/tcg/riscv64: add float reference files >>>> tests/tcg/riscv64: user tests >>>> tests/tcg/riscv64: system tests >>>> tests/tcg/s390x/head64.S: declare _exit symbol after main >>>> tests/tcg/s390x: add float reference files >>>> tests/tcg/s390x: user tests >>>> tests/tcg/s390x: system tests >>>> tests/tcg/sh4: add float reference files >>>> tests/tcg/sh4: user tests >>>> tests/tcg/tricore: system tests >>>> Revert "tests/tcg/tricore: system tests" >>>> tests/tcg/x86_64: add missing float reference file >>>> tests/tcg/x86_64: user tests >>>> tests/tcg/x86_64: system tests >>>> tests/tcg/xtensa/crt.S: align .text section >>>> tests/tcg/xtensa: system tests >>>> tests: remove tcg tests machinery >>>> tests/tcg: remove Makefiles >>>> configure: remove --cross-cc* options >>>> >>>> configure | 473 --------- >>>> docs/devel/testing/main.rst | 22 +- >>>> plugins/api.c | 2 + >>>> scripts/probe-gdb-support.py | 1 + >>>> tests/Makefile.include | 68 +- >>>> tests/docker/docker.py | 4 +- >>>> .../dockerfiles/debian-all-test-cross.docker | 16 +- >>>> tests/lcitool/refresh | 107 +- >>>> tests/meson.build | 2 +- >>>> tests/tcg/Makefile.target | 281 ----- >>>> tests/tcg/aarch64/Makefile.softmmu-target | 147 --- >>>> tests/tcg/aarch64/Makefile.target | 198 ---- >>>> tests/tcg/aarch64/meson.build | 195 ++++ >>>> tests/tcg/aarch64/system/gpc-test.c | 5 - >>>> tests/tcg/aarch64/system/meson.build | 108 ++ >>>> tests/tcg/aarch64_be/Makefile.target | 17 - >>>> tests/tcg/aarch64_be/meson.build | 22 + >>>> tests/tcg/alpha/Makefile.softmmu-target | 34 - >>>> tests/tcg/alpha/Makefile.target | 18 - >>>> tests/tcg/alpha/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/alpha/meson.build | 55 + >>>> tests/tcg/alpha/system/meson.build | 46 + >>>> tests/tcg/arm/Makefile.softmmu-target | 80 -- >>>> tests/tcg/arm/Makefile.target | 87 -- >>>> tests/tcg/arm/meson.build | 80 ++ >>>> tests/tcg/arm/system/meson.build | 66 ++ >>>> tests/tcg/hexagon/Makefile.target | 146 --- >>>> tests/tcg/hexagon/meson.build | 111 ++ >>>> tests/tcg/hexagon/overflow.c | 1 + >>>> tests/tcg/hppa/Makefile.target | 14 - >>>> tests/tcg/hppa/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/hppa/meson.build | 22 + >>>> tests/tcg/i386/Makefile.softmmu-target | 37 - >>>> tests/tcg/i386/Makefile.target | 102 -- >>>> tests/tcg/i386/float_convd.conf | 988 >>>> ------------------ >>>> tests/tcg/i386/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/i386/meson.build | 58 + >>>> tests/tcg/i386/system/meson.build | 48 + >>>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 - >>>> tests/tcg/loongarch64/Makefile.target | 20 - >>>> tests/tcg/loongarch64/meson.build | 32 + >>>> tests/tcg/loongarch64/system/meson.build | 47 + >>>> tests/tcg/m68k/Makefile.target | 7 - >>>> tests/tcg/m68k/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/m68k/meson.build | 23 + >>>> tests/tcg/meson.build | 447 ++++++++ >>>> tests/tcg/minilib/Makefile.target | 21 - >>>> tests/tcg/mips/Makefile.target | 19 - >>>> tests/tcg/mips/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/mips/meson.build | 25 + >>>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- >>>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - >>>> tests/tcg/mips/user/isa/r5900/Makefile | 32 - >>>> tests/tcg/mips64/Makefile.target | 20 - >>>> tests/tcg/mips64/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/mips64/meson.build | 27 + >>>> tests/tcg/mips64el/Makefile.target | 8 - >>>> tests/tcg/mips64el/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/mips64el/meson.build | 14 + >>>> tests/tcg/multiarch/Makefile.target | 233 ----- >>>> tests/tcg/multiarch/meson.build | 149 +++ >>>> .../multiarch/plugin/check-plugin-output.sh | 36 - >>>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 + >>>> tests/tcg/multiarch/sha1.c | 4 +- >>>> tests/tcg/multiarch/sha1.ref | 1 + >>>> .../multiarch/system/Makefile.softmmu-target | 81 -- >>>> tests/tcg/multiarch/system/memory.c | 3 +- >>>> tests/tcg/multiarch/system/meson.build | 53 + >>>> tests/tcg/or1k/Makefile | 71 -- >>>> tests/tcg/or1k/float_convd.ref | 247 +++++ >>>> tests/tcg/or1k/float_convs.ref | 187 ++++ >>>> tests/tcg/or1k/float_madds.ref | 192 ++++ >>>> tests/tcg/or1k/meson.build | 72 ++ >>>> tests/tcg/or1k/test_addic.c | 2 +- >>>> tests/tcg/or1k/test_muli.c | 5 +- >>>> tests/tcg/plugins/meson.build | 11 +- >>>> tests/tcg/ppc64/Makefile.target | 63 -- >>>> tests/tcg/ppc64/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/ppc64/meson.build | 56 + >>>> tests/tcg/ppc64/vector.c | 11 +- >>>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- >>>> tests/tcg/ppc64le/Makefile.target | 7 - >>>> tests/tcg/ppc64le/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/ppc64le/meson.build | 14 + >>>> tests/tcg/riscv64/Makefile.softmmu-target | 45 - >>>> tests/tcg/riscv64/Makefile.target | 20 - >>>> tests/tcg/riscv64/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/riscv64/meson.build | 38 + >>>> tests/tcg/riscv64/system/meson.build | 38 + >>>> tests/tcg/s390x/Makefile.softmmu-target | 57 - >>>> tests/tcg/s390x/Makefile.target | 127 --- >>>> tests/tcg/s390x/float_convd.ref | 988 +++++++++++++ >>>> +++++ >>>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ >>>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/s390x/head64.S | 2 + >>>> tests/tcg/s390x/meson.build | 140 +++ >>>> tests/tcg/s390x/system/meson.build | 92 ++ >>>> tests/tcg/scripts/check_plugin_output.sh | 25 + >>>> tests/tcg/scripts/record_replay.sh | 16 + >>>> .../scripts/run_and_check_forbidden_output.sh | 19 + >>>> tests/tcg/scripts/run_and_diff.sh | 15 + >>>> tests/tcg/scripts/run_with_input.sh | 12 + >>>> tests/tcg/sh4/Makefile.target | 18 - >>>> tests/tcg/sh4/float_convd.ref | 494 +++++++++ >>>> tests/tcg/sh4/float_convs.ref | 374 +++++++ >>>> tests/tcg/sh4/float_madds.ref | 384 +++++++ >>>> tests/tcg/sh4/meson.build | 25 + >>>> tests/tcg/tricore/Makefile.softmmu-target | 53 - >>>> tests/tcg/x86_64/Makefile.softmmu-target | 44 - >>>> tests/tcg/x86_64/Makefile.target | 40 - >>>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ >>>> tests/tcg/x86_64/meson.build | 83 ++ >>>> tests/tcg/x86_64/system/meson.build | 62 ++ >>>> tests/tcg/xtensa/Makefile.softmmu-target | 46 - >>>> tests/tcg/xtensa/crt.S | 1 + >>>> tests/tcg/xtensa/meson.build | 89 ++ >>>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - >>>> 134 files changed, 30491 insertions(+), 4114 deletions(-) >>>> delete mode 100644 tests/tcg/Makefile.target >>>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/aarch64/Makefile.target >>>> create mode 100644 tests/tcg/aarch64/meson.build >>>> create mode 100644 tests/tcg/aarch64/system/meson.build >>>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target >>>> create mode 100644 tests/tcg/aarch64_be/meson.build >>>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/alpha/Makefile.target >>>> create mode 100644 tests/tcg/alpha/float_convd.ref >>>> create mode 100644 tests/tcg/alpha/float_convs.ref >>>> create mode 100644 tests/tcg/alpha/float_madds.ref >>>> create mode 100644 tests/tcg/alpha/meson.build >>>> create mode 100644 tests/tcg/alpha/system/meson.build >>>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/arm/Makefile.target >>>> create mode 100644 tests/tcg/arm/meson.build >>>> create mode 100644 tests/tcg/arm/system/meson.build >>>> delete mode 100644 tests/tcg/hexagon/Makefile.target >>>> create mode 100644 tests/tcg/hexagon/meson.build >>>> delete mode 100644 tests/tcg/hppa/Makefile.target >>>> create mode 100644 tests/tcg/hppa/float_convd.ref >>>> create mode 100644 tests/tcg/hppa/float_convs.ref >>>> create mode 100644 tests/tcg/hppa/float_madds.ref >>>> create mode 100644 tests/tcg/hppa/meson.build >>>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/i386/Makefile.target >>>> delete mode 100644 tests/tcg/i386/float_convd.conf >>>> create mode 100644 tests/tcg/i386/float_convd.ref >>>> create mode 100644 tests/tcg/i386/float_madds.ref >>>> create mode 100644 tests/tcg/i386/meson.build >>>> create mode 100644 tests/tcg/i386/system/meson.build >>>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/loongarch64/Makefile.target >>>> create mode 100644 tests/tcg/loongarch64/meson.build >>>> create mode 100644 tests/tcg/loongarch64/system/meson.build >>>> delete mode 100644 tests/tcg/m68k/Makefile.target >>>> create mode 100644 tests/tcg/m68k/float_convd.ref >>>> create mode 100644 tests/tcg/m68k/float_convs.ref >>>> create mode 100644 tests/tcg/m68k/float_madds.ref >>>> create mode 100644 tests/tcg/m68k/meson.build >>>> create mode 100644 tests/tcg/meson.build >>>> delete mode 100644 tests/tcg/minilib/Makefile.target >>>> delete mode 100644 tests/tcg/mips/Makefile.target >>>> create mode 100644 tests/tcg/mips/float_convd.ref >>>> create mode 100644 tests/tcg/mips/float_convs.ref >>>> create mode 100644 tests/tcg/mips/float_madds.ref >>>> create mode 100644 tests/tcg/mips/meson.build >>>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile >>>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile >>>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile >>>> delete mode 100644 tests/tcg/mips64/Makefile.target >>>> create mode 100644 tests/tcg/mips64/float_convd.ref >>>> create mode 100644 tests/tcg/mips64/float_convs.ref >>>> create mode 100644 tests/tcg/mips64/float_madds.ref >>>> create mode 100644 tests/tcg/mips64/meson.build >>>> delete mode 100644 tests/tcg/mips64el/Makefile.target >>>> create mode 100644 tests/tcg/mips64el/float_convd.ref >>>> create mode 100644 tests/tcg/mips64el/float_convs.ref >>>> create mode 100644 tests/tcg/mips64el/float_madds.ref >>>> create mode 100644 tests/tcg/mips64el/meson.build >>>> delete mode 100644 tests/tcg/multiarch/Makefile.target >>>> create mode 100644 tests/tcg/multiarch/meson.build >>>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh >>>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh >>>> create mode 100644 tests/tcg/multiarch/sha1.ref >>>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu- >>>> target >>>> create mode 100644 tests/tcg/multiarch/system/meson.build >>>> delete mode 100644 tests/tcg/or1k/Makefile >>>> create mode 100644 tests/tcg/or1k/float_convd.ref >>>> create mode 100644 tests/tcg/or1k/float_convs.ref >>>> create mode 100644 tests/tcg/or1k/float_madds.ref >>>> create mode 100644 tests/tcg/or1k/meson.build >>>> delete mode 100644 tests/tcg/ppc64/Makefile.target >>>> create mode 100644 tests/tcg/ppc64/float_convd.ref >>>> create mode 100644 tests/tcg/ppc64/float_convs.ref >>>> create mode 100644 tests/tcg/ppc64/float_madds.ref >>>> create mode 100644 tests/tcg/ppc64/meson.build >>>> delete mode 100644 tests/tcg/ppc64le/Makefile.target >>>> create mode 100644 tests/tcg/ppc64le/float_convd.ref >>>> create mode 100644 tests/tcg/ppc64le/meson.build >>>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/riscv64/Makefile.target >>>> create mode 100644 tests/tcg/riscv64/float_convd.ref >>>> create mode 100644 tests/tcg/riscv64/float_convs.ref >>>> create mode 100644 tests/tcg/riscv64/float_madds.ref >>>> create mode 100644 tests/tcg/riscv64/meson.build >>>> create mode 100644 tests/tcg/riscv64/system/meson.build >>>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/s390x/Makefile.target >>>> create mode 100644 tests/tcg/s390x/float_convd.ref >>>> create mode 100644 tests/tcg/s390x/float_convs.ref >>>> create mode 100644 tests/tcg/s390x/float_madds.ref >>>> create mode 100644 tests/tcg/s390x/meson.build >>>> create mode 100644 tests/tcg/s390x/system/meson.build >>>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh >>>> create mode 100755 tests/tcg/scripts/record_replay.sh >>>> create mode 100755 tests/tcg/scripts/ >>>> run_and_check_forbidden_output.sh >>>> create mode 100755 tests/tcg/scripts/run_and_diff.sh >>>> create mode 100755 tests/tcg/scripts/run_with_input.sh >>>> delete mode 100644 tests/tcg/sh4/Makefile.target >>>> create mode 100644 tests/tcg/sh4/float_convd.ref >>>> create mode 100644 tests/tcg/sh4/float_convs.ref >>>> create mode 100644 tests/tcg/sh4/float_madds.ref >>>> create mode 100644 tests/tcg/sh4/meson.build >>>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target >>>> delete mode 100644 tests/tcg/x86_64/Makefile.target >>>> create mode 100644 tests/tcg/x86_64/float_madds.ref >>>> create mode 100644 tests/tcg/x86_64/meson.build >>>> create mode 100644 tests/tcg/x86_64/system/meson.build >>>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target >>>> create mode 100644 tests/tcg/xtensa/meson.build >>>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target >>>> >>> >>> Seems like something is wrong with cross-compiler detection now. >>> On Fedora I get: >>> >>> FAILED: tests/tcg/s390x-softmmu-memory.test >>> /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu- >>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ >>> tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu- >>> memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall - >>> Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu- >>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ >>> tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu- >>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ >>> tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/ >>> qemu-worktrees/20260706223343.988769-1- >>> pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/ >>> home/iii/qemu-worktrees/20260706223343.988769-1- >>> pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include - >>> march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/ >>> system/../console.c -DCHECK_UNALIGNED=0 >>> In file included from /mnt/root/home/iii/qemu- >>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/ >>> tests/tcg/multiarch/system/memory.c:15: >>> /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error: >>> stdint.h: No such file or directory >>> 11 | # include_next <stdint.h> >>> | ^~~~~~~~~~ >>> >>> The cross-compiler situation on Fedora is that they ship the >>> cross-compiler itself, but no userspace headers, so it's usable >>> only for kernel builds. In this case QEMU should fall back to Docker, >>> which works for me on master, but not with this series. >> >> Thanks for the report. I just tried that on debian for now. >> >> Also, for s390x, I noticed that some tests are relying on roms/SLOF/... >> headers, which are not available if submodules are not initialized. >> Probably another corner case to cover. > We've got some logic in the configure script that should always > initialize the roms/SLOF submodule when you build the s390x target: > > if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \ > GIT=git "$source_path/scripts/git-submodule.sh" > "$git_submodules_action" roms/SLOF >> config.log 2>&1; then > > Is that failing in your case? > The latest commits remove all those configure steps to use meson directly. I solved it by adding the memcpy and memset definition directly in console.c to remove the dependency on roms/SLOF. > Thomas > Regards, Pierrick
On 7/7/26 00:32, Pierrick Bouvier wrote: > This series replaces TCG tests makefiles with meson, with the > goal of having something more readable and maintainable in the long term. > Also it closes the gap that tcg tests had with the rest of tests, by integrating > them with meson directly. > > It covers all existing tests for all architectures, including > user/system/multiarch-user/multiarch-system. It implements all requirements > listed on original thread [1]. > > [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ > > We also have for free: > - correct and complete dependencies for any test, including: > scripts, c.inc, headers, reference files and binaries/plugins. > - catch test declaration issues at configure time vs test time. > - proper data types for variables instead of string expansion with make. > > Series first introduce the meson machinery needed in tests/tcg/meson.build, step > by step. Then it adds support for all existing archs. Finally, we remove > Makefiles and configure bits. > > Usage: > > ``` > make check-tcg > make check-tcg-aarch64-linux-user > make check-tcg-aarch64-softmmu > > make tcg-tests > > ninja clean > ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose > ``` > > A few items were left for further work (out of scope for this series): > - xtensaeb: didn't find how to cross compile for this architecture with what we > have now in container debian-xtensa-cross. Tips are welcome. Cc'ing Max > - tricore: implemented but reverted as all tests seem to hang. To be > investigated. Cc'ing Parthiban > - riscv64/interruptedmemory.S is hanging. To be investigated. Cc'ing qemu-riscv@ > - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not > match bare metal result) and is the slowest test we have. To be refactored and > fixed. > > v3 > -- > > - add all architectures > - reduce number of plugins tests (only add one test for each plugin from > multiarch pool) > - add depends for executable - allow to depend on a custom target for generated > headers (x86_64 mmx, avx) > - add new tests added since last version for aarch64 (mte + gpc) > - refactor series to keep all arch files at end > - add docker host architecture selection > > v2 > -- > > - s/mispell/misspell > - moved comment about why we remove 'lib' prefix for plugins > - if user declare a wrong entry in a dictionary, list possible keys > - build tests by default (with 'all' target), as long as cross compiler is > natively installed, to avoid triggering a container build. > - reword some comments based on reviewers feedback > - always declare all tests and avoid "per config" errors (no 'if' in arch files) > - move compiler feature and gdb version checks directly in tests/tcg/meson.build > - add support for cross containers > - add top target 'tcg-tests' to rebuild all tests
On 7/6/2026 3:32 PM, Pierrick Bouvier wrote: > This series replaces TCG tests makefiles with meson, with the > goal of having something more readable and maintainable in the long term. > Also it closes the gap that tcg tests had with the rest of tests, by integrating > them with meson directly. > > It covers all existing tests for all architectures, including > user/system/multiarch-user/multiarch-system. It implements all requirements > listed on original thread [1]. > > [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ > > We also have for free: > - correct and complete dependencies for any test, including: > scripts, c.inc, headers, reference files and binaries/plugins. > - catch test declaration issues at configure time vs test time. > - proper data types for variables instead of string expansion with make. > > Series first introduce the meson machinery needed in tests/tcg/meson.build, step > by step. Then it adds support for all existing archs. Finally, we remove > Makefiles and configure bits. > > Usage: > > ``` > make check-tcg > make check-tcg-aarch64-linux-user > make check-tcg-aarch64-softmmu > > make tcg-tests > > ninja clean > ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose > ``` > > A few items were left for further work (out of scope for this series): > - xtensaeb: didn't find how to cross compile for this architecture with what we > have now in container debian-xtensa-cross. Tips are welcome. > - tricore: implemented but reverted as all tests seem to hang. To be > investigated. > - riscv64/interruptedmemory.S is hanging. To be investigated. > - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not > match bare metal result) and is the slowest test we have. To be refactored and > fixed. > > v3 > -- > > - add all architectures > - reduce number of plugins tests (only add one test for each plugin from > multiarch pool) > - add depends for executable - allow to depend on a custom target for generated > headers (x86_64 mmx, avx) > - add new tests added since last version for aarch64 (mte + gpc) > - refactor series to keep all arch files at end > - add docker host architecture selection > > v2 > -- > > - s/mispell/misspell > - moved comment about why we remove 'lib' prefix for plugins > - if user declare a wrong entry in a dictionary, list possible keys > - build tests by default (with 'all' target), as long as cross compiler is > natively installed, to avoid triggering a container build. > - reword some comments based on reviewers feedback > - always declare all tests and avoid "per config" errors (no 'if' in arch files) > - move compiler feature and gdb version checks directly in tests/tcg/meson.build > - add support for cross containers > - add top target 'tcg-tests' to rebuild all tests > > Pierrick Bouvier (91): > tests/tcg/multiarch/system/memory.c: remove unused variable > tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as > input > tests/tcg/multiarch/plugin: rename check-plugin-output to > regex-compare > tests/tcg: introduce meson.build > tests/tcg/meson.build: introduce exe_name > tests/tcg/meson.build: introduce test_name > tests/tcg/meson.build: introduce cflags > tests/tcg/meson.build: introduce qemu_args > tests/tcg/meson.build: introduce env_var > tests/tcg/plugins: build list of test_plugins > tests/tcg/meson.build: introduce plugin_test > tests/tcg/meson.build: test gdb support and introduce gdb_arch > tests/tcg/meson.build: introduce gdb_test > tests/tcg/meson.build: add default flag for testing compiler support > tests/tcg/meson.build: introduce wrapper > tests/tcg/meson.build: introduce expected_output > tests/tcg/meson.build: add wrapper run_and_check_forbidden_output > tests/tcg/meson.build: add wrapper run_with_input > tests/tcg/meson.build: add wrapper record_replay > tests/tcg/meson.build: add wrapper check_plugin_output > tests/tcg/meson.build: add logic to skip tests > tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags > tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version > tests/tcg/meson.build: move gdb_arch support check > tests/tcg/meson.build: let test infrastructure detect compiler > tests/docker/docker.py: return error code if probe fails > tests/docker/docker.py: remove "Image is up to date" info > tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch > tests/tcg/meson.build: introduce depends > tests/tcg/meson.build: add top-level 'tcg-tests' target > tests/tcg/multiarch: declare user tests > tests/tcg/multiarch: declare system tests > tests/tcg/meson.build: add generic plugin tests > tests/tcg/aarch64: user tests > tests/tcg/aarch64/system/gpc-test.c: remove unused variables > tests/tcg/aarch64: system tests > tests/tcg/aarch64_be: user tests > tests/tcg/alpha: add float reference files > tests/tcg/alpha: user tests > tests/tcg/alpha: system tests > tests/tcg/arm: user tests > tests/tcg/arm: system tests > tests/tcg/hexagon/overflow.c: add missing include > tests/tcg/hexagon: user tests > tests/tcg/multiarch/sha1.c: fix big endian implementation > tests/tcg/hppa: add float reference files > tests/tcg/hppa: user tests > tests/tcg/i386: add missing float reference files > tests/tcg/i386: user tests > tests/tcg/i386: system tests > tests/tcg/loongarch64: user tests > tests/tcg/loongarch64: system tests > tests/tcg/m68k: add float reference files > tests/tcg/m68k: user tests > scripts/probe-gdb-support.py: add mapping for mips architecture > tests/tcg/mips: add float reference files > test/tcg/mips: user tests > tests/tcg/mips64: add float reference files > tests/tcg/mips64: user tests > tests/tcg/mips64el: add float reference files > tests/tcg/mips64el: user tests > tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k > toolchain > tests/tcg/or1k/test_addic.c: remove unused variables > tests/tcg/or1k/test_muli.c: remove set but unused variable > tests/tcg/or1k: add float reference files > plugins/api.c: identify or1k pc register and mark it as read only > tests/tcg/or1k: user tests > tests/tcg/ppc64: add float reference files > tests/tcg/ppc64: remove dependency on qemu/compiler.h > tests/tcg/ppc64: user tests > tests/tcg/ppc64le: add missing float reference file > tests/tcg/ppc64le: user tests > tests/tcg/riscv64: add float reference files > tests/tcg/riscv64: user tests > tests/tcg/riscv64: system tests > tests/tcg/s390x/head64.S: declare _exit symbol after main > tests/tcg/s390x: add float reference files > tests/tcg/s390x: user tests > tests/tcg/s390x: system tests > tests/tcg/sh4: add float reference files > tests/tcg/sh4: user tests > tests/tcg/tricore: system tests > Revert "tests/tcg/tricore: system tests" > tests/tcg/x86_64: add missing float reference file > tests/tcg/x86_64: user tests > tests/tcg/x86_64: system tests > tests/tcg/xtensa/crt.S: align .text section > tests/tcg/xtensa: system tests > tests: remove tcg tests machinery > tests/tcg: remove Makefiles > configure: remove --cross-cc* options > > configure | 473 --------- > docs/devel/testing/main.rst | 22 +- > plugins/api.c | 2 + > scripts/probe-gdb-support.py | 1 + > tests/Makefile.include | 68 +- > tests/docker/docker.py | 4 +- > .../dockerfiles/debian-all-test-cross.docker | 16 +- > tests/lcitool/refresh | 107 +- > tests/meson.build | 2 +- > tests/tcg/Makefile.target | 281 ----- > tests/tcg/aarch64/Makefile.softmmu-target | 147 --- > tests/tcg/aarch64/Makefile.target | 198 ---- > tests/tcg/aarch64/meson.build | 195 ++++ > tests/tcg/aarch64/system/gpc-test.c | 5 - > tests/tcg/aarch64/system/meson.build | 108 ++ > tests/tcg/aarch64_be/Makefile.target | 17 - > tests/tcg/aarch64_be/meson.build | 22 + > tests/tcg/alpha/Makefile.softmmu-target | 34 - > tests/tcg/alpha/Makefile.target | 18 - > tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ > tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ > tests/tcg/alpha/meson.build | 55 + > tests/tcg/alpha/system/meson.build | 46 + > tests/tcg/arm/Makefile.softmmu-target | 80 -- > tests/tcg/arm/Makefile.target | 87 -- > tests/tcg/arm/meson.build | 80 ++ > tests/tcg/arm/system/meson.build | 66 ++ > tests/tcg/hexagon/Makefile.target | 146 --- > tests/tcg/hexagon/meson.build | 111 ++ > tests/tcg/hexagon/overflow.c | 1 + > tests/tcg/hppa/Makefile.target | 14 - > tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ > tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ > tests/tcg/hppa/meson.build | 22 + > tests/tcg/i386/Makefile.softmmu-target | 37 - > tests/tcg/i386/Makefile.target | 102 -- > tests/tcg/i386/float_convd.conf | 988 ------------------ > tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ > tests/tcg/i386/meson.build | 58 + > tests/tcg/i386/system/meson.build | 48 + > tests/tcg/loongarch64/Makefile.softmmu-target | 33 - > tests/tcg/loongarch64/Makefile.target | 20 - > tests/tcg/loongarch64/meson.build | 32 + > tests/tcg/loongarch64/system/meson.build | 47 + > tests/tcg/m68k/Makefile.target | 7 - > tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ > tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ > tests/tcg/m68k/meson.build | 23 + > tests/tcg/meson.build | 447 ++++++++ > tests/tcg/minilib/Makefile.target | 21 - > tests/tcg/mips/Makefile.target | 19 - > tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips/meson.build | 25 + > tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- > tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - > tests/tcg/mips/user/isa/r5900/Makefile | 32 - > tests/tcg/mips64/Makefile.target | 20 - > tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64/meson.build | 27 + > tests/tcg/mips64el/Makefile.target | 8 - > tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64el/meson.build | 14 + > tests/tcg/multiarch/Makefile.target | 233 ----- > tests/tcg/multiarch/meson.build | 149 +++ > .../multiarch/plugin/check-plugin-output.sh | 36 - > tests/tcg/multiarch/plugin/regex-compare.sh | 28 + > tests/tcg/multiarch/sha1.c | 4 +- > tests/tcg/multiarch/sha1.ref | 1 + > .../multiarch/system/Makefile.softmmu-target | 81 -- > tests/tcg/multiarch/system/memory.c | 3 +- > tests/tcg/multiarch/system/meson.build | 53 + > tests/tcg/or1k/Makefile | 71 -- > tests/tcg/or1k/float_convd.ref | 247 +++++ > tests/tcg/or1k/float_convs.ref | 187 ++++ > tests/tcg/or1k/float_madds.ref | 192 ++++ > tests/tcg/or1k/meson.build | 72 ++ > tests/tcg/or1k/test_addic.c | 2 +- > tests/tcg/or1k/test_muli.c | 5 +- > tests/tcg/plugins/meson.build | 11 +- > tests/tcg/ppc64/Makefile.target | 63 -- > tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ > tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/ppc64/meson.build | 56 + > tests/tcg/ppc64/vector.c | 11 +- > tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- > tests/tcg/ppc64le/Makefile.target | 7 - > tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64le/meson.build | 14 + > tests/tcg/riscv64/Makefile.softmmu-target | 45 - > tests/tcg/riscv64/Makefile.target | 20 - > tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ > tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/riscv64/meson.build | 38 + > tests/tcg/riscv64/system/meson.build | 38 + > tests/tcg/s390x/Makefile.softmmu-target | 57 - > tests/tcg/s390x/Makefile.target | 127 --- > tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ > tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ > tests/tcg/s390x/head64.S | 2 + > tests/tcg/s390x/meson.build | 140 +++ > tests/tcg/s390x/system/meson.build | 92 ++ > tests/tcg/scripts/check_plugin_output.sh | 25 + > tests/tcg/scripts/record_replay.sh | 16 + > .../scripts/run_and_check_forbidden_output.sh | 19 + > tests/tcg/scripts/run_and_diff.sh | 15 + > tests/tcg/scripts/run_with_input.sh | 12 + > tests/tcg/sh4/Makefile.target | 18 - > tests/tcg/sh4/float_convd.ref | 494 +++++++++ > tests/tcg/sh4/float_convs.ref | 374 +++++++ > tests/tcg/sh4/float_madds.ref | 384 +++++++ > tests/tcg/sh4/meson.build | 25 + > tests/tcg/tricore/Makefile.softmmu-target | 53 - > tests/tcg/x86_64/Makefile.softmmu-target | 44 - > tests/tcg/x86_64/Makefile.target | 40 - > tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/x86_64/meson.build | 83 ++ > tests/tcg/x86_64/system/meson.build | 62 ++ > tests/tcg/xtensa/Makefile.softmmu-target | 46 - > tests/tcg/xtensa/crt.S | 1 + > tests/tcg/xtensa/meson.build | 89 ++ > tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - > 134 files changed, 30491 insertions(+), 4114 deletions(-) > delete mode 100644 tests/tcg/Makefile.target > delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/aarch64/Makefile.target > create mode 100644 tests/tcg/aarch64/meson.build > create mode 100644 tests/tcg/aarch64/system/meson.build > delete mode 100644 tests/tcg/aarch64_be/Makefile.target > create mode 100644 tests/tcg/aarch64_be/meson.build > delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target > delete mode 100644 tests/tcg/alpha/Makefile.target > create mode 100644 tests/tcg/alpha/float_convd.ref > create mode 100644 tests/tcg/alpha/float_convs.ref > create mode 100644 tests/tcg/alpha/float_madds.ref > create mode 100644 tests/tcg/alpha/meson.build > create mode 100644 tests/tcg/alpha/system/meson.build > delete mode 100644 tests/tcg/arm/Makefile.softmmu-target > delete mode 100644 tests/tcg/arm/Makefile.target > create mode 100644 tests/tcg/arm/meson.build > create mode 100644 tests/tcg/arm/system/meson.build > delete mode 100644 tests/tcg/hexagon/Makefile.target > create mode 100644 tests/tcg/hexagon/meson.build > delete mode 100644 tests/tcg/hppa/Makefile.target > create mode 100644 tests/tcg/hppa/float_convd.ref > create mode 100644 tests/tcg/hppa/float_convs.ref > create mode 100644 tests/tcg/hppa/float_madds.ref > create mode 100644 tests/tcg/hppa/meson.build > delete mode 100644 tests/tcg/i386/Makefile.softmmu-target > delete mode 100644 tests/tcg/i386/Makefile.target > delete mode 100644 tests/tcg/i386/float_convd.conf > create mode 100644 tests/tcg/i386/float_convd.ref > create mode 100644 tests/tcg/i386/float_madds.ref > create mode 100644 tests/tcg/i386/meson.build > create mode 100644 tests/tcg/i386/system/meson.build > delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/loongarch64/Makefile.target > create mode 100644 tests/tcg/loongarch64/meson.build > create mode 100644 tests/tcg/loongarch64/system/meson.build > delete mode 100644 tests/tcg/m68k/Makefile.target > create mode 100644 tests/tcg/m68k/float_convd.ref > create mode 100644 tests/tcg/m68k/float_convs.ref > create mode 100644 tests/tcg/m68k/float_madds.ref > create mode 100644 tests/tcg/m68k/meson.build > create mode 100644 tests/tcg/meson.build > delete mode 100644 tests/tcg/minilib/Makefile.target > delete mode 100644 tests/tcg/mips/Makefile.target > create mode 100644 tests/tcg/mips/float_convd.ref > create mode 100644 tests/tcg/mips/float_convs.ref > create mode 100644 tests/tcg/mips/float_madds.ref > create mode 100644 tests/tcg/mips/meson.build > delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile > delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile > delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile > delete mode 100644 tests/tcg/mips64/Makefile.target > create mode 100644 tests/tcg/mips64/float_convd.ref > create mode 100644 tests/tcg/mips64/float_convs.ref > create mode 100644 tests/tcg/mips64/float_madds.ref > create mode 100644 tests/tcg/mips64/meson.build > delete mode 100644 tests/tcg/mips64el/Makefile.target > create mode 100644 tests/tcg/mips64el/float_convd.ref > create mode 100644 tests/tcg/mips64el/float_convs.ref > create mode 100644 tests/tcg/mips64el/float_madds.ref > create mode 100644 tests/tcg/mips64el/meson.build > delete mode 100644 tests/tcg/multiarch/Makefile.target > create mode 100644 tests/tcg/multiarch/meson.build > delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh > create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh > create mode 100644 tests/tcg/multiarch/sha1.ref > delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target > create mode 100644 tests/tcg/multiarch/system/meson.build > delete mode 100644 tests/tcg/or1k/Makefile > create mode 100644 tests/tcg/or1k/float_convd.ref > create mode 100644 tests/tcg/or1k/float_convs.ref > create mode 100644 tests/tcg/or1k/float_madds.ref > create mode 100644 tests/tcg/or1k/meson.build > delete mode 100644 tests/tcg/ppc64/Makefile.target > create mode 100644 tests/tcg/ppc64/float_convd.ref > create mode 100644 tests/tcg/ppc64/float_convs.ref > create mode 100644 tests/tcg/ppc64/float_madds.ref > create mode 100644 tests/tcg/ppc64/meson.build > delete mode 100644 tests/tcg/ppc64le/Makefile.target > create mode 100644 tests/tcg/ppc64le/float_convd.ref > create mode 100644 tests/tcg/ppc64le/meson.build > delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target > delete mode 100644 tests/tcg/riscv64/Makefile.target > create mode 100644 tests/tcg/riscv64/float_convd.ref > create mode 100644 tests/tcg/riscv64/float_convs.ref > create mode 100644 tests/tcg/riscv64/float_madds.ref > create mode 100644 tests/tcg/riscv64/meson.build > create mode 100644 tests/tcg/riscv64/system/meson.build > delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target > delete mode 100644 tests/tcg/s390x/Makefile.target > create mode 100644 tests/tcg/s390x/float_convd.ref > create mode 100644 tests/tcg/s390x/float_convs.ref > create mode 100644 tests/tcg/s390x/float_madds.ref > create mode 100644 tests/tcg/s390x/meson.build > create mode 100644 tests/tcg/s390x/system/meson.build > create mode 100755 tests/tcg/scripts/check_plugin_output.sh > create mode 100755 tests/tcg/scripts/record_replay.sh > create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh > create mode 100755 tests/tcg/scripts/run_and_diff.sh > create mode 100755 tests/tcg/scripts/run_with_input.sh > delete mode 100644 tests/tcg/sh4/Makefile.target > create mode 100644 tests/tcg/sh4/float_convd.ref > create mode 100644 tests/tcg/sh4/float_convs.ref > create mode 100644 tests/tcg/sh4/float_madds.ref > create mode 100644 tests/tcg/sh4/meson.build > delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.target > create mode 100644 tests/tcg/x86_64/float_madds.ref > create mode 100644 tests/tcg/x86_64/meson.build > create mode 100644 tests/tcg/x86_64/system/meson.build > delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target > create mode 100644 tests/tcg/xtensa/meson.build > delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target > Sent v4, adding missing targets (xtensaeb + tricore) and all changes requested on v3. https://lore.kernel.org/qemu-devel/20260710062016.1818125-1-pierrick.bouvier@oss.qualcomm.com/T/# Regards, Pierrick
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes: > This series replaces TCG tests makefiles with meson, with the > goal of having something more readable and maintainable in the long term. > Also it closes the gap that tcg tests had with the rest of tests, by integrating > them with meson directly. > > It covers all existing tests for all architectures, including > user/system/multiarch-user/multiarch-system. It implements all requirements > listed on original thread [1]. > > [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ > > We also have for free: > - correct and complete dependencies for any test, including: > scripts, c.inc, headers, reference files and binaries/plugins. > - catch test declaration issues at configure time vs test time. > - proper data types for variables instead of string expansion with make. > > Series first introduce the meson machinery needed in tests/tcg/meson.build, step > by step. Then it adds support for all existing archs. Finally, we remove > Makefiles and configure bits. > > Usage: > > ``` > make check-tcg > make check-tcg-aarch64-linux-user > make check-tcg-aarch64-softmmu > > make tcg-tests Can these be built via ninja? Also I noticed docs/devel/testing/main.rst needs updating for the new world. It would be nice to add a simple example of adding a new test if you can. > > ninja clean > ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose > ``` > > A few items were left for further work (out of scope for this series): > - xtensaeb: didn't find how to cross compile for this architecture with what we > have now in container debian-xtensa-cross. Tips are welcome. > - tricore: implemented but reverted as all tests seem to hang. To be > investigated. > - riscv64/interruptedmemory.S is hanging. To be investigated. > - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not > match bare metal result) and is the slowest test we have. To be refactored and > fixed. > > v3 > -- > > - add all architectures > - reduce number of plugins tests (only add one test for each plugin from > multiarch pool) > - add depends for executable - allow to depend on a custom target for generated > headers (x86_64 mmx, avx) > - add new tests added since last version for aarch64 (mte + gpc) > - refactor series to keep all arch files at end > - add docker host architecture selection > > v2 > -- > > - s/mispell/misspell > - moved comment about why we remove 'lib' prefix for plugins > - if user declare a wrong entry in a dictionary, list possible keys > - build tests by default (with 'all' target), as long as cross compiler is > natively installed, to avoid triggering a container build. > - reword some comments based on reviewers feedback > - always declare all tests and avoid "per config" errors (no 'if' in arch files) > - move compiler feature and gdb version checks directly in tests/tcg/meson.build > - add support for cross containers > - add top target 'tcg-tests' to rebuild all tests > > Pierrick Bouvier (91): > tests/tcg/multiarch/system/memory.c: remove unused variable > tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as > input > tests/tcg/multiarch/plugin: rename check-plugin-output to > regex-compare > tests/tcg: introduce meson.build > tests/tcg/meson.build: introduce exe_name > tests/tcg/meson.build: introduce test_name > tests/tcg/meson.build: introduce cflags > tests/tcg/meson.build: introduce qemu_args > tests/tcg/meson.build: introduce env_var > tests/tcg/plugins: build list of test_plugins > tests/tcg/meson.build: introduce plugin_test > tests/tcg/meson.build: test gdb support and introduce gdb_arch > tests/tcg/meson.build: introduce gdb_test > tests/tcg/meson.build: add default flag for testing compiler support > tests/tcg/meson.build: introduce wrapper > tests/tcg/meson.build: introduce expected_output > tests/tcg/meson.build: add wrapper run_and_check_forbidden_output > tests/tcg/meson.build: add wrapper run_with_input > tests/tcg/meson.build: add wrapper record_replay > tests/tcg/meson.build: add wrapper check_plugin_output > tests/tcg/meson.build: add logic to skip tests > tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags > tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version > tests/tcg/meson.build: move gdb_arch support check > tests/tcg/meson.build: let test infrastructure detect compiler > tests/docker/docker.py: return error code if probe fails > tests/docker/docker.py: remove "Image is up to date" info > tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch > tests/tcg/meson.build: introduce depends > tests/tcg/meson.build: add top-level 'tcg-tests' target > tests/tcg/multiarch: declare user tests > tests/tcg/multiarch: declare system tests > tests/tcg/meson.build: add generic plugin tests > tests/tcg/aarch64: user tests > tests/tcg/aarch64/system/gpc-test.c: remove unused variables > tests/tcg/aarch64: system tests > tests/tcg/aarch64_be: user tests > tests/tcg/alpha: add float reference files > tests/tcg/alpha: user tests > tests/tcg/alpha: system tests > tests/tcg/arm: user tests > tests/tcg/arm: system tests > tests/tcg/hexagon/overflow.c: add missing include > tests/tcg/hexagon: user tests > tests/tcg/multiarch/sha1.c: fix big endian implementation > tests/tcg/hppa: add float reference files > tests/tcg/hppa: user tests > tests/tcg/i386: add missing float reference files > tests/tcg/i386: user tests > tests/tcg/i386: system tests > tests/tcg/loongarch64: user tests > tests/tcg/loongarch64: system tests > tests/tcg/m68k: add float reference files > tests/tcg/m68k: user tests > scripts/probe-gdb-support.py: add mapping for mips architecture > tests/tcg/mips: add float reference files > test/tcg/mips: user tests > tests/tcg/mips64: add float reference files > tests/tcg/mips64: user tests > tests/tcg/mips64el: add float reference files > tests/tcg/mips64el: user tests > tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k > toolchain > tests/tcg/or1k/test_addic.c: remove unused variables > tests/tcg/or1k/test_muli.c: remove set but unused variable > tests/tcg/or1k: add float reference files > plugins/api.c: identify or1k pc register and mark it as read only > tests/tcg/or1k: user tests > tests/tcg/ppc64: add float reference files > tests/tcg/ppc64: remove dependency on qemu/compiler.h > tests/tcg/ppc64: user tests > tests/tcg/ppc64le: add missing float reference file > tests/tcg/ppc64le: user tests > tests/tcg/riscv64: add float reference files > tests/tcg/riscv64: user tests > tests/tcg/riscv64: system tests > tests/tcg/s390x/head64.S: declare _exit symbol after main > tests/tcg/s390x: add float reference files > tests/tcg/s390x: user tests > tests/tcg/s390x: system tests > tests/tcg/sh4: add float reference files > tests/tcg/sh4: user tests > tests/tcg/tricore: system tests > Revert "tests/tcg/tricore: system tests" > tests/tcg/x86_64: add missing float reference file > tests/tcg/x86_64: user tests > tests/tcg/x86_64: system tests > tests/tcg/xtensa/crt.S: align .text section > tests/tcg/xtensa: system tests > tests: remove tcg tests machinery > tests/tcg: remove Makefiles > configure: remove --cross-cc* options > > configure | 473 --------- > docs/devel/testing/main.rst | 22 +- > plugins/api.c | 2 + > scripts/probe-gdb-support.py | 1 + > tests/Makefile.include | 68 +- > tests/docker/docker.py | 4 +- > .../dockerfiles/debian-all-test-cross.docker | 16 +- > tests/lcitool/refresh | 107 +- > tests/meson.build | 2 +- > tests/tcg/Makefile.target | 281 ----- > tests/tcg/aarch64/Makefile.softmmu-target | 147 --- > tests/tcg/aarch64/Makefile.target | 198 ---- > tests/tcg/aarch64/meson.build | 195 ++++ > tests/tcg/aarch64/system/gpc-test.c | 5 - > tests/tcg/aarch64/system/meson.build | 108 ++ > tests/tcg/aarch64_be/Makefile.target | 17 - > tests/tcg/aarch64_be/meson.build | 22 + > tests/tcg/alpha/Makefile.softmmu-target | 34 - > tests/tcg/alpha/Makefile.target | 18 - > tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ > tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ > tests/tcg/alpha/meson.build | 55 + > tests/tcg/alpha/system/meson.build | 46 + > tests/tcg/arm/Makefile.softmmu-target | 80 -- > tests/tcg/arm/Makefile.target | 87 -- > tests/tcg/arm/meson.build | 80 ++ > tests/tcg/arm/system/meson.build | 66 ++ > tests/tcg/hexagon/Makefile.target | 146 --- > tests/tcg/hexagon/meson.build | 111 ++ > tests/tcg/hexagon/overflow.c | 1 + > tests/tcg/hppa/Makefile.target | 14 - > tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ > tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ > tests/tcg/hppa/meson.build | 22 + > tests/tcg/i386/Makefile.softmmu-target | 37 - > tests/tcg/i386/Makefile.target | 102 -- > tests/tcg/i386/float_convd.conf | 988 ------------------ > tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ > tests/tcg/i386/meson.build | 58 + > tests/tcg/i386/system/meson.build | 48 + > tests/tcg/loongarch64/Makefile.softmmu-target | 33 - > tests/tcg/loongarch64/Makefile.target | 20 - > tests/tcg/loongarch64/meson.build | 32 + > tests/tcg/loongarch64/system/meson.build | 47 + > tests/tcg/m68k/Makefile.target | 7 - > tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ > tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ > tests/tcg/m68k/meson.build | 23 + > tests/tcg/meson.build | 447 ++++++++ > tests/tcg/minilib/Makefile.target | 21 - > tests/tcg/mips/Makefile.target | 19 - > tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips/meson.build | 25 + > tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- > tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - > tests/tcg/mips/user/isa/r5900/Makefile | 32 - > tests/tcg/mips64/Makefile.target | 20 - > tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64/meson.build | 27 + > tests/tcg/mips64el/Makefile.target | 8 - > tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64el/meson.build | 14 + > tests/tcg/multiarch/Makefile.target | 233 ----- > tests/tcg/multiarch/meson.build | 149 +++ > .../multiarch/plugin/check-plugin-output.sh | 36 - > tests/tcg/multiarch/plugin/regex-compare.sh | 28 + > tests/tcg/multiarch/sha1.c | 4 +- > tests/tcg/multiarch/sha1.ref | 1 + > .../multiarch/system/Makefile.softmmu-target | 81 -- > tests/tcg/multiarch/system/memory.c | 3 +- > tests/tcg/multiarch/system/meson.build | 53 + > tests/tcg/or1k/Makefile | 71 -- > tests/tcg/or1k/float_convd.ref | 247 +++++ > tests/tcg/or1k/float_convs.ref | 187 ++++ > tests/tcg/or1k/float_madds.ref | 192 ++++ > tests/tcg/or1k/meson.build | 72 ++ > tests/tcg/or1k/test_addic.c | 2 +- > tests/tcg/or1k/test_muli.c | 5 +- > tests/tcg/plugins/meson.build | 11 +- > tests/tcg/ppc64/Makefile.target | 63 -- > tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ > tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/ppc64/meson.build | 56 + > tests/tcg/ppc64/vector.c | 11 +- > tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- > tests/tcg/ppc64le/Makefile.target | 7 - > tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64le/meson.build | 14 + > tests/tcg/riscv64/Makefile.softmmu-target | 45 - > tests/tcg/riscv64/Makefile.target | 20 - > tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ > tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/riscv64/meson.build | 38 + > tests/tcg/riscv64/system/meson.build | 38 + > tests/tcg/s390x/Makefile.softmmu-target | 57 - > tests/tcg/s390x/Makefile.target | 127 --- > tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ > tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ > tests/tcg/s390x/head64.S | 2 + > tests/tcg/s390x/meson.build | 140 +++ > tests/tcg/s390x/system/meson.build | 92 ++ > tests/tcg/scripts/check_plugin_output.sh | 25 + > tests/tcg/scripts/record_replay.sh | 16 + > .../scripts/run_and_check_forbidden_output.sh | 19 + > tests/tcg/scripts/run_and_diff.sh | 15 + > tests/tcg/scripts/run_with_input.sh | 12 + > tests/tcg/sh4/Makefile.target | 18 - > tests/tcg/sh4/float_convd.ref | 494 +++++++++ > tests/tcg/sh4/float_convs.ref | 374 +++++++ > tests/tcg/sh4/float_madds.ref | 384 +++++++ > tests/tcg/sh4/meson.build | 25 + > tests/tcg/tricore/Makefile.softmmu-target | 53 - > tests/tcg/x86_64/Makefile.softmmu-target | 44 - > tests/tcg/x86_64/Makefile.target | 40 - > tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/x86_64/meson.build | 83 ++ > tests/tcg/x86_64/system/meson.build | 62 ++ > tests/tcg/xtensa/Makefile.softmmu-target | 46 - > tests/tcg/xtensa/crt.S | 1 + > tests/tcg/xtensa/meson.build | 89 ++ > tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - > 134 files changed, 30491 insertions(+), 4114 deletions(-) > delete mode 100644 tests/tcg/Makefile.target > delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/aarch64/Makefile.target > create mode 100644 tests/tcg/aarch64/meson.build > create mode 100644 tests/tcg/aarch64/system/meson.build > delete mode 100644 tests/tcg/aarch64_be/Makefile.target > create mode 100644 tests/tcg/aarch64_be/meson.build > delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target > delete mode 100644 tests/tcg/alpha/Makefile.target > create mode 100644 tests/tcg/alpha/float_convd.ref > create mode 100644 tests/tcg/alpha/float_convs.ref > create mode 100644 tests/tcg/alpha/float_madds.ref > create mode 100644 tests/tcg/alpha/meson.build > create mode 100644 tests/tcg/alpha/system/meson.build > delete mode 100644 tests/tcg/arm/Makefile.softmmu-target > delete mode 100644 tests/tcg/arm/Makefile.target > create mode 100644 tests/tcg/arm/meson.build > create mode 100644 tests/tcg/arm/system/meson.build > delete mode 100644 tests/tcg/hexagon/Makefile.target > create mode 100644 tests/tcg/hexagon/meson.build > delete mode 100644 tests/tcg/hppa/Makefile.target > create mode 100644 tests/tcg/hppa/float_convd.ref > create mode 100644 tests/tcg/hppa/float_convs.ref > create mode 100644 tests/tcg/hppa/float_madds.ref > create mode 100644 tests/tcg/hppa/meson.build > delete mode 100644 tests/tcg/i386/Makefile.softmmu-target > delete mode 100644 tests/tcg/i386/Makefile.target > delete mode 100644 tests/tcg/i386/float_convd.conf > create mode 100644 tests/tcg/i386/float_convd.ref > create mode 100644 tests/tcg/i386/float_madds.ref > create mode 100644 tests/tcg/i386/meson.build > create mode 100644 tests/tcg/i386/system/meson.build > delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/loongarch64/Makefile.target > create mode 100644 tests/tcg/loongarch64/meson.build > create mode 100644 tests/tcg/loongarch64/system/meson.build > delete mode 100644 tests/tcg/m68k/Makefile.target > create mode 100644 tests/tcg/m68k/float_convd.ref > create mode 100644 tests/tcg/m68k/float_convs.ref > create mode 100644 tests/tcg/m68k/float_madds.ref > create mode 100644 tests/tcg/m68k/meson.build > create mode 100644 tests/tcg/meson.build > delete mode 100644 tests/tcg/minilib/Makefile.target > delete mode 100644 tests/tcg/mips/Makefile.target > create mode 100644 tests/tcg/mips/float_convd.ref > create mode 100644 tests/tcg/mips/float_convs.ref > create mode 100644 tests/tcg/mips/float_madds.ref > create mode 100644 tests/tcg/mips/meson.build > delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile > delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile > delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile > delete mode 100644 tests/tcg/mips64/Makefile.target > create mode 100644 tests/tcg/mips64/float_convd.ref > create mode 100644 tests/tcg/mips64/float_convs.ref > create mode 100644 tests/tcg/mips64/float_madds.ref > create mode 100644 tests/tcg/mips64/meson.build > delete mode 100644 tests/tcg/mips64el/Makefile.target > create mode 100644 tests/tcg/mips64el/float_convd.ref > create mode 100644 tests/tcg/mips64el/float_convs.ref > create mode 100644 tests/tcg/mips64el/float_madds.ref > create mode 100644 tests/tcg/mips64el/meson.build > delete mode 100644 tests/tcg/multiarch/Makefile.target > create mode 100644 tests/tcg/multiarch/meson.build > delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh > create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh > create mode 100644 tests/tcg/multiarch/sha1.ref > delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target > create mode 100644 tests/tcg/multiarch/system/meson.build > delete mode 100644 tests/tcg/or1k/Makefile > create mode 100644 tests/tcg/or1k/float_convd.ref > create mode 100644 tests/tcg/or1k/float_convs.ref > create mode 100644 tests/tcg/or1k/float_madds.ref > create mode 100644 tests/tcg/or1k/meson.build > delete mode 100644 tests/tcg/ppc64/Makefile.target > create mode 100644 tests/tcg/ppc64/float_convd.ref > create mode 100644 tests/tcg/ppc64/float_convs.ref > create mode 100644 tests/tcg/ppc64/float_madds.ref > create mode 100644 tests/tcg/ppc64/meson.build > delete mode 100644 tests/tcg/ppc64le/Makefile.target > create mode 100644 tests/tcg/ppc64le/float_convd.ref > create mode 100644 tests/tcg/ppc64le/meson.build > delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target > delete mode 100644 tests/tcg/riscv64/Makefile.target > create mode 100644 tests/tcg/riscv64/float_convd.ref > create mode 100644 tests/tcg/riscv64/float_convs.ref > create mode 100644 tests/tcg/riscv64/float_madds.ref > create mode 100644 tests/tcg/riscv64/meson.build > create mode 100644 tests/tcg/riscv64/system/meson.build > delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target > delete mode 100644 tests/tcg/s390x/Makefile.target > create mode 100644 tests/tcg/s390x/float_convd.ref > create mode 100644 tests/tcg/s390x/float_convs.ref > create mode 100644 tests/tcg/s390x/float_madds.ref > create mode 100644 tests/tcg/s390x/meson.build > create mode 100644 tests/tcg/s390x/system/meson.build > create mode 100755 tests/tcg/scripts/check_plugin_output.sh > create mode 100755 tests/tcg/scripts/record_replay.sh > create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh > create mode 100755 tests/tcg/scripts/run_and_diff.sh > create mode 100755 tests/tcg/scripts/run_with_input.sh > delete mode 100644 tests/tcg/sh4/Makefile.target > create mode 100644 tests/tcg/sh4/float_convd.ref > create mode 100644 tests/tcg/sh4/float_convs.ref > create mode 100644 tests/tcg/sh4/float_madds.ref > create mode 100644 tests/tcg/sh4/meson.build > delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.target > create mode 100644 tests/tcg/x86_64/float_madds.ref > create mode 100644 tests/tcg/x86_64/meson.build > create mode 100644 tests/tcg/x86_64/system/meson.build > delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target > create mode 100644 tests/tcg/xtensa/meson.build > delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target -- Alex Bennée Virtualisation Tech Lead @ Linaro
On 7/9/2026 9:22 AM, Alex Bennée wrote: > Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes: > >> This series replaces TCG tests makefiles with meson, with the >> goal of having something more readable and maintainable in the long term. >> Also it closes the gap that tcg tests had with the rest of tests, by integrating >> them with meson directly. >> >> It covers all existing tests for all architectures, including >> user/system/multiarch-user/multiarch-system. It implements all requirements >> listed on original thread [1]. >> >> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ >> >> We also have for free: >> - correct and complete dependencies for any test, including: >> scripts, c.inc, headers, reference files and binaries/plugins. >> - catch test declaration issues at configure time vs test time. >> - proper data types for variables instead of string expansion with make. >> >> Series first introduce the meson machinery needed in tests/tcg/meson.build, step >> by step. Then it adds support for all existing archs. Finally, we remove >> Makefiles and configure bits. >> >> Usage: >> >> ``` >> make check-tcg >> make check-tcg-aarch64-linux-user >> make check-tcg-aarch64-softmmu >> >> make tcg-tests > > Can these be built via ninja? > Yes sure. I just listed make commands because I know some people can be very sensitive about using anything out of make. make tcg-tests is the same target as ninja tcg-tests. The check targets are custom to Makefiles, because in an ideal world we should be using meson test instead of make for this. Now that all tests are meson native, maybe it will be time to reconsider this and officially use meson test instead of make. > Also I noticed docs/devel/testing/main.rst needs updating for the new > world. It would be nice to add a simple example of adding a new test if > you can. > If possible, I would like to avoid duplicating the comments from tests/tcg/meson.build in docs. Documentation tends to become obsolete, while code itself has to stay up to date by definition. There are plenty of examples in tests/tcg/* to find how to declare tests if someone is looking for information. Usually, a new test will just be a copy of an existing one. What do you think? For the rest, you're right, I'll update https://www.qemu.org/docs/master/devel/testing/main.html#testing-with-make-check-tcg to match the new commands. >> >> ninja clean >> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose >> ``` >> >> A few items were left for further work (out of scope for this series): >> - xtensaeb: didn't find how to cross compile for this architecture with what we >> have now in container debian-xtensa-cross. Tips are welcome. >> - tricore: implemented but reverted as all tests seem to hang. To be >> investigated. >> - riscv64/interruptedmemory.S is hanging. To be investigated. >> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not >> match bare metal result) and is the slowest test we have. To be refactored and >> fixed. >> >> v3 >> -- >> >> - add all architectures >> - reduce number of plugins tests (only add one test for each plugin from >> multiarch pool) >> - add depends for executable - allow to depend on a custom target for generated >> headers (x86_64 mmx, avx) >> - add new tests added since last version for aarch64 (mte + gpc) >> - refactor series to keep all arch files at end >> - add docker host architecture selection >> >> v2 >> -- >> >> - s/mispell/misspell >> - moved comment about why we remove 'lib' prefix for plugins >> - if user declare a wrong entry in a dictionary, list possible keys >> - build tests by default (with 'all' target), as long as cross compiler is >> natively installed, to avoid triggering a container build. >> - reword some comments based on reviewers feedback >> - always declare all tests and avoid "per config" errors (no 'if' in arch files) >> - move compiler feature and gdb version checks directly in tests/tcg/meson.build >> - add support for cross containers >> - add top target 'tcg-tests' to rebuild all tests >> >> Pierrick Bouvier (91): >> tests/tcg/multiarch/system/memory.c: remove unused variable >> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as >> input >> tests/tcg/multiarch/plugin: rename check-plugin-output to >> regex-compare >> tests/tcg: introduce meson.build >> tests/tcg/meson.build: introduce exe_name >> tests/tcg/meson.build: introduce test_name >> tests/tcg/meson.build: introduce cflags >> tests/tcg/meson.build: introduce qemu_args >> tests/tcg/meson.build: introduce env_var >> tests/tcg/plugins: build list of test_plugins >> tests/tcg/meson.build: introduce plugin_test >> tests/tcg/meson.build: test gdb support and introduce gdb_arch >> tests/tcg/meson.build: introduce gdb_test >> tests/tcg/meson.build: add default flag for testing compiler support >> tests/tcg/meson.build: introduce wrapper >> tests/tcg/meson.build: introduce expected_output >> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output >> tests/tcg/meson.build: add wrapper run_with_input >> tests/tcg/meson.build: add wrapper record_replay >> tests/tcg/meson.build: add wrapper check_plugin_output >> tests/tcg/meson.build: add logic to skip tests >> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags >> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version >> tests/tcg/meson.build: move gdb_arch support check >> tests/tcg/meson.build: let test infrastructure detect compiler >> tests/docker/docker.py: return error code if probe fails >> tests/docker/docker.py: remove "Image is up to date" info >> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch >> tests/tcg/meson.build: introduce depends >> tests/tcg/meson.build: add top-level 'tcg-tests' target >> tests/tcg/multiarch: declare user tests >> tests/tcg/multiarch: declare system tests >> tests/tcg/meson.build: add generic plugin tests >> tests/tcg/aarch64: user tests >> tests/tcg/aarch64/system/gpc-test.c: remove unused variables >> tests/tcg/aarch64: system tests >> tests/tcg/aarch64_be: user tests >> tests/tcg/alpha: add float reference files >> tests/tcg/alpha: user tests >> tests/tcg/alpha: system tests >> tests/tcg/arm: user tests >> tests/tcg/arm: system tests >> tests/tcg/hexagon/overflow.c: add missing include >> tests/tcg/hexagon: user tests >> tests/tcg/multiarch/sha1.c: fix big endian implementation >> tests/tcg/hppa: add float reference files >> tests/tcg/hppa: user tests >> tests/tcg/i386: add missing float reference files >> tests/tcg/i386: user tests >> tests/tcg/i386: system tests >> tests/tcg/loongarch64: user tests >> tests/tcg/loongarch64: system tests >> tests/tcg/m68k: add float reference files >> tests/tcg/m68k: user tests >> scripts/probe-gdb-support.py: add mapping for mips architecture >> tests/tcg/mips: add float reference files >> test/tcg/mips: user tests >> tests/tcg/mips64: add float reference files >> tests/tcg/mips64: user tests >> tests/tcg/mips64el: add float reference files >> tests/tcg/mips64el: user tests >> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k >> toolchain >> tests/tcg/or1k/test_addic.c: remove unused variables >> tests/tcg/or1k/test_muli.c: remove set but unused variable >> tests/tcg/or1k: add float reference files >> plugins/api.c: identify or1k pc register and mark it as read only >> tests/tcg/or1k: user tests >> tests/tcg/ppc64: add float reference files >> tests/tcg/ppc64: remove dependency on qemu/compiler.h >> tests/tcg/ppc64: user tests >> tests/tcg/ppc64le: add missing float reference file >> tests/tcg/ppc64le: user tests >> tests/tcg/riscv64: add float reference files >> tests/tcg/riscv64: user tests >> tests/tcg/riscv64: system tests >> tests/tcg/s390x/head64.S: declare _exit symbol after main >> tests/tcg/s390x: add float reference files >> tests/tcg/s390x: user tests >> tests/tcg/s390x: system tests >> tests/tcg/sh4: add float reference files >> tests/tcg/sh4: user tests >> tests/tcg/tricore: system tests >> Revert "tests/tcg/tricore: system tests" >> tests/tcg/x86_64: add missing float reference file >> tests/tcg/x86_64: user tests >> tests/tcg/x86_64: system tests >> tests/tcg/xtensa/crt.S: align .text section >> tests/tcg/xtensa: system tests >> tests: remove tcg tests machinery >> tests/tcg: remove Makefiles >> configure: remove --cross-cc* options >> >> configure | 473 --------- >> docs/devel/testing/main.rst | 22 +- >> plugins/api.c | 2 + >> scripts/probe-gdb-support.py | 1 + >> tests/Makefile.include | 68 +- >> tests/docker/docker.py | 4 +- >> .../dockerfiles/debian-all-test-cross.docker | 16 +- >> tests/lcitool/refresh | 107 +- >> tests/meson.build | 2 +- >> tests/tcg/Makefile.target | 281 ----- >> tests/tcg/aarch64/Makefile.softmmu-target | 147 --- >> tests/tcg/aarch64/Makefile.target | 198 ---- >> tests/tcg/aarch64/meson.build | 195 ++++ >> tests/tcg/aarch64/system/gpc-test.c | 5 - >> tests/tcg/aarch64/system/meson.build | 108 ++ >> tests/tcg/aarch64_be/Makefile.target | 17 - >> tests/tcg/aarch64_be/meson.build | 22 + >> tests/tcg/alpha/Makefile.softmmu-target | 34 - >> tests/tcg/alpha/Makefile.target | 18 - >> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ >> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/alpha/meson.build | 55 + >> tests/tcg/alpha/system/meson.build | 46 + >> tests/tcg/arm/Makefile.softmmu-target | 80 -- >> tests/tcg/arm/Makefile.target | 87 -- >> tests/tcg/arm/meson.build | 80 ++ >> tests/tcg/arm/system/meson.build | 66 ++ >> tests/tcg/hexagon/Makefile.target | 146 --- >> tests/tcg/hexagon/meson.build | 111 ++ >> tests/tcg/hexagon/overflow.c | 1 + >> tests/tcg/hppa/Makefile.target | 14 - >> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ >> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/hppa/meson.build | 22 + >> tests/tcg/i386/Makefile.softmmu-target | 37 - >> tests/tcg/i386/Makefile.target | 102 -- >> tests/tcg/i386/float_convd.conf | 988 ------------------ >> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/i386/meson.build | 58 + >> tests/tcg/i386/system/meson.build | 48 + >> tests/tcg/loongarch64/Makefile.softmmu-target | 33 - >> tests/tcg/loongarch64/Makefile.target | 20 - >> tests/tcg/loongarch64/meson.build | 32 + >> tests/tcg/loongarch64/system/meson.build | 47 + >> tests/tcg/m68k/Makefile.target | 7 - >> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ >> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/m68k/meson.build | 23 + >> tests/tcg/meson.build | 447 ++++++++ >> tests/tcg/minilib/Makefile.target | 21 - >> tests/tcg/mips/Makefile.target | 19 - >> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips/meson.build | 25 + >> tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- >> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - >> tests/tcg/mips/user/isa/r5900/Makefile | 32 - >> tests/tcg/mips64/Makefile.target | 20 - >> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips64/meson.build | 27 + >> tests/tcg/mips64el/Makefile.target | 8 - >> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ >> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/mips64el/meson.build | 14 + >> tests/tcg/multiarch/Makefile.target | 233 ----- >> tests/tcg/multiarch/meson.build | 149 +++ >> .../multiarch/plugin/check-plugin-output.sh | 36 - >> tests/tcg/multiarch/plugin/regex-compare.sh | 28 + >> tests/tcg/multiarch/sha1.c | 4 +- >> tests/tcg/multiarch/sha1.ref | 1 + >> .../multiarch/system/Makefile.softmmu-target | 81 -- >> tests/tcg/multiarch/system/memory.c | 3 +- >> tests/tcg/multiarch/system/meson.build | 53 + >> tests/tcg/or1k/Makefile | 71 -- >> tests/tcg/or1k/float_convd.ref | 247 +++++ >> tests/tcg/or1k/float_convs.ref | 187 ++++ >> tests/tcg/or1k/float_madds.ref | 192 ++++ >> tests/tcg/or1k/meson.build | 72 ++ >> tests/tcg/or1k/test_addic.c | 2 +- >> tests/tcg/or1k/test_muli.c | 5 +- >> tests/tcg/plugins/meson.build | 11 +- >> tests/tcg/ppc64/Makefile.target | 63 -- >> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/ppc64/meson.build | 56 + >> tests/tcg/ppc64/vector.c | 11 +- >> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- >> tests/tcg/ppc64le/Makefile.target | 7 - >> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/ppc64le/meson.build | 14 + >> tests/tcg/riscv64/Makefile.softmmu-target | 45 - >> tests/tcg/riscv64/Makefile.target | 20 - >> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ >> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/riscv64/meson.build | 38 + >> tests/tcg/riscv64/system/meson.build | 38 + >> tests/tcg/s390x/Makefile.softmmu-target | 57 - >> tests/tcg/s390x/Makefile.target | 127 --- >> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ >> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ >> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/s390x/head64.S | 2 + >> tests/tcg/s390x/meson.build | 140 +++ >> tests/tcg/s390x/system/meson.build | 92 ++ >> tests/tcg/scripts/check_plugin_output.sh | 25 + >> tests/tcg/scripts/record_replay.sh | 16 + >> .../scripts/run_and_check_forbidden_output.sh | 19 + >> tests/tcg/scripts/run_and_diff.sh | 15 + >> tests/tcg/scripts/run_with_input.sh | 12 + >> tests/tcg/sh4/Makefile.target | 18 - >> tests/tcg/sh4/float_convd.ref | 494 +++++++++ >> tests/tcg/sh4/float_convs.ref | 374 +++++++ >> tests/tcg/sh4/float_madds.ref | 384 +++++++ >> tests/tcg/sh4/meson.build | 25 + >> tests/tcg/tricore/Makefile.softmmu-target | 53 - >> tests/tcg/x86_64/Makefile.softmmu-target | 44 - >> tests/tcg/x86_64/Makefile.target | 40 - >> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ >> tests/tcg/x86_64/meson.build | 83 ++ >> tests/tcg/x86_64/system/meson.build | 62 ++ >> tests/tcg/xtensa/Makefile.softmmu-target | 46 - >> tests/tcg/xtensa/crt.S | 1 + >> tests/tcg/xtensa/meson.build | 89 ++ >> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - >> 134 files changed, 30491 insertions(+), 4114 deletions(-) >> delete mode 100644 tests/tcg/Makefile.target >> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/aarch64/Makefile.target >> create mode 100644 tests/tcg/aarch64/meson.build >> create mode 100644 tests/tcg/aarch64/system/meson.build >> delete mode 100644 tests/tcg/aarch64_be/Makefile.target >> create mode 100644 tests/tcg/aarch64_be/meson.build >> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target >> delete mode 100644 tests/tcg/alpha/Makefile.target >> create mode 100644 tests/tcg/alpha/float_convd.ref >> create mode 100644 tests/tcg/alpha/float_convs.ref >> create mode 100644 tests/tcg/alpha/float_madds.ref >> create mode 100644 tests/tcg/alpha/meson.build >> create mode 100644 tests/tcg/alpha/system/meson.build >> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target >> delete mode 100644 tests/tcg/arm/Makefile.target >> create mode 100644 tests/tcg/arm/meson.build >> create mode 100644 tests/tcg/arm/system/meson.build >> delete mode 100644 tests/tcg/hexagon/Makefile.target >> create mode 100644 tests/tcg/hexagon/meson.build >> delete mode 100644 tests/tcg/hppa/Makefile.target >> create mode 100644 tests/tcg/hppa/float_convd.ref >> create mode 100644 tests/tcg/hppa/float_convs.ref >> create mode 100644 tests/tcg/hppa/float_madds.ref >> create mode 100644 tests/tcg/hppa/meson.build >> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target >> delete mode 100644 tests/tcg/i386/Makefile.target >> delete mode 100644 tests/tcg/i386/float_convd.conf >> create mode 100644 tests/tcg/i386/float_convd.ref >> create mode 100644 tests/tcg/i386/float_madds.ref >> create mode 100644 tests/tcg/i386/meson.build >> create mode 100644 tests/tcg/i386/system/meson.build >> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/loongarch64/Makefile.target >> create mode 100644 tests/tcg/loongarch64/meson.build >> create mode 100644 tests/tcg/loongarch64/system/meson.build >> delete mode 100644 tests/tcg/m68k/Makefile.target >> create mode 100644 tests/tcg/m68k/float_convd.ref >> create mode 100644 tests/tcg/m68k/float_convs.ref >> create mode 100644 tests/tcg/m68k/float_madds.ref >> create mode 100644 tests/tcg/m68k/meson.build >> create mode 100644 tests/tcg/meson.build >> delete mode 100644 tests/tcg/minilib/Makefile.target >> delete mode 100644 tests/tcg/mips/Makefile.target >> create mode 100644 tests/tcg/mips/float_convd.ref >> create mode 100644 tests/tcg/mips/float_convs.ref >> create mode 100644 tests/tcg/mips/float_madds.ref >> create mode 100644 tests/tcg/mips/meson.build >> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile >> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile >> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile >> delete mode 100644 tests/tcg/mips64/Makefile.target >> create mode 100644 tests/tcg/mips64/float_convd.ref >> create mode 100644 tests/tcg/mips64/float_convs.ref >> create mode 100644 tests/tcg/mips64/float_madds.ref >> create mode 100644 tests/tcg/mips64/meson.build >> delete mode 100644 tests/tcg/mips64el/Makefile.target >> create mode 100644 tests/tcg/mips64el/float_convd.ref >> create mode 100644 tests/tcg/mips64el/float_convs.ref >> create mode 100644 tests/tcg/mips64el/float_madds.ref >> create mode 100644 tests/tcg/mips64el/meson.build >> delete mode 100644 tests/tcg/multiarch/Makefile.target >> create mode 100644 tests/tcg/multiarch/meson.build >> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh >> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh >> create mode 100644 tests/tcg/multiarch/sha1.ref >> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target >> create mode 100644 tests/tcg/multiarch/system/meson.build >> delete mode 100644 tests/tcg/or1k/Makefile >> create mode 100644 tests/tcg/or1k/float_convd.ref >> create mode 100644 tests/tcg/or1k/float_convs.ref >> create mode 100644 tests/tcg/or1k/float_madds.ref >> create mode 100644 tests/tcg/or1k/meson.build >> delete mode 100644 tests/tcg/ppc64/Makefile.target >> create mode 100644 tests/tcg/ppc64/float_convd.ref >> create mode 100644 tests/tcg/ppc64/float_convs.ref >> create mode 100644 tests/tcg/ppc64/float_madds.ref >> create mode 100644 tests/tcg/ppc64/meson.build >> delete mode 100644 tests/tcg/ppc64le/Makefile.target >> create mode 100644 tests/tcg/ppc64le/float_convd.ref >> create mode 100644 tests/tcg/ppc64le/meson.build >> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/riscv64/Makefile.target >> create mode 100644 tests/tcg/riscv64/float_convd.ref >> create mode 100644 tests/tcg/riscv64/float_convs.ref >> create mode 100644 tests/tcg/riscv64/float_madds.ref >> create mode 100644 tests/tcg/riscv64/meson.build >> create mode 100644 tests/tcg/riscv64/system/meson.build >> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target >> delete mode 100644 tests/tcg/s390x/Makefile.target >> create mode 100644 tests/tcg/s390x/float_convd.ref >> create mode 100644 tests/tcg/s390x/float_convs.ref >> create mode 100644 tests/tcg/s390x/float_madds.ref >> create mode 100644 tests/tcg/s390x/meson.build >> create mode 100644 tests/tcg/s390x/system/meson.build >> create mode 100755 tests/tcg/scripts/check_plugin_output.sh >> create mode 100755 tests/tcg/scripts/record_replay.sh >> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh >> create mode 100755 tests/tcg/scripts/run_and_diff.sh >> create mode 100755 tests/tcg/scripts/run_with_input.sh >> delete mode 100644 tests/tcg/sh4/Makefile.target >> create mode 100644 tests/tcg/sh4/float_convd.ref >> create mode 100644 tests/tcg/sh4/float_convs.ref >> create mode 100644 tests/tcg/sh4/float_madds.ref >> create mode 100644 tests/tcg/sh4/meson.build >> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target >> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target >> delete mode 100644 tests/tcg/x86_64/Makefile.target >> create mode 100644 tests/tcg/x86_64/float_madds.ref >> create mode 100644 tests/tcg/x86_64/meson.build >> create mode 100644 tests/tcg/x86_64/system/meson.build >> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target >> create mode 100644 tests/tcg/xtensa/meson.build >> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target >
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes: > This series replaces TCG tests makefiles with meson, with the > goal of having something more readable and maintainable in the long term. > Also it closes the gap that tcg tests had with the rest of tests, by integrating > them with meson directly. > > It covers all existing tests for all architectures, including > user/system/multiarch-user/multiarch-system. It implements all requirements > listed on original thread [1]. > > [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/ > > We also have for free: > - correct and complete dependencies for any test, including: > scripts, c.inc, headers, reference files and binaries/plugins. > - catch test declaration issues at configure time vs test time. > - proper data types for variables instead of string expansion with make. > > Series first introduce the meson machinery needed in tests/tcg/meson.build, step > by step. Then it adds support for all existing archs. Finally, we remove > Makefiles and configure bits. > > Usage: > > ``` > make check-tcg > make check-tcg-aarch64-linux-user > make check-tcg-aarch64-softmmu > > make tcg-tests > > ninja clean > ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose > ``` For the series: Tested-by: Alex Bennée <alex.bennee@linaro.org> > > A few items were left for further work (out of scope for this series): > - xtensaeb: didn't find how to cross compile for this architecture with what we > have now in container debian-xtensa-cross. Tips are welcome. > - tricore: implemented but reverted as all tests seem to hang. To be > investigated. > - riscv64/interruptedmemory.S is hanging. To be investigated. > - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not > match bare metal result) and is the slowest test we have. To be refactored and > fixed. > > v3 > -- > > - add all architectures > - reduce number of plugins tests (only add one test for each plugin from > multiarch pool) > - add depends for executable - allow to depend on a custom target for generated > headers (x86_64 mmx, avx) > - add new tests added since last version for aarch64 (mte + gpc) > - refactor series to keep all arch files at end > - add docker host architecture selection > > v2 > -- > > - s/mispell/misspell > - moved comment about why we remove 'lib' prefix for plugins > - if user declare a wrong entry in a dictionary, list possible keys > - build tests by default (with 'all' target), as long as cross compiler is > natively installed, to avoid triggering a container build. > - reword some comments based on reviewers feedback > - always declare all tests and avoid "per config" errors (no 'if' in arch files) > - move compiler feature and gdb version checks directly in tests/tcg/meson.build > - add support for cross containers > - add top target 'tcg-tests' to rebuild all tests > > Pierrick Bouvier (91): > tests/tcg/multiarch/system/memory.c: remove unused variable > tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as > input > tests/tcg/multiarch/plugin: rename check-plugin-output to > regex-compare > tests/tcg: introduce meson.build > tests/tcg/meson.build: introduce exe_name > tests/tcg/meson.build: introduce test_name > tests/tcg/meson.build: introduce cflags > tests/tcg/meson.build: introduce qemu_args > tests/tcg/meson.build: introduce env_var > tests/tcg/plugins: build list of test_plugins > tests/tcg/meson.build: introduce plugin_test > tests/tcg/meson.build: test gdb support and introduce gdb_arch > tests/tcg/meson.build: introduce gdb_test > tests/tcg/meson.build: add default flag for testing compiler support > tests/tcg/meson.build: introduce wrapper > tests/tcg/meson.build: introduce expected_output > tests/tcg/meson.build: add wrapper run_and_check_forbidden_output > tests/tcg/meson.build: add wrapper run_with_input > tests/tcg/meson.build: add wrapper record_replay > tests/tcg/meson.build: add wrapper check_plugin_output > tests/tcg/meson.build: add logic to skip tests > tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags > tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version > tests/tcg/meson.build: move gdb_arch support check > tests/tcg/meson.build: let test infrastructure detect compiler > tests/docker/docker.py: return error code if probe fails > tests/docker/docker.py: remove "Image is up to date" info > tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch > tests/tcg/meson.build: introduce depends > tests/tcg/meson.build: add top-level 'tcg-tests' target > tests/tcg/multiarch: declare user tests > tests/tcg/multiarch: declare system tests > tests/tcg/meson.build: add generic plugin tests > tests/tcg/aarch64: user tests > tests/tcg/aarch64/system/gpc-test.c: remove unused variables > tests/tcg/aarch64: system tests > tests/tcg/aarch64_be: user tests > tests/tcg/alpha: add float reference files > tests/tcg/alpha: user tests > tests/tcg/alpha: system tests > tests/tcg/arm: user tests > tests/tcg/arm: system tests > tests/tcg/hexagon/overflow.c: add missing include > tests/tcg/hexagon: user tests > tests/tcg/multiarch/sha1.c: fix big endian implementation > tests/tcg/hppa: add float reference files > tests/tcg/hppa: user tests > tests/tcg/i386: add missing float reference files > tests/tcg/i386: user tests > tests/tcg/i386: system tests > tests/tcg/loongarch64: user tests > tests/tcg/loongarch64: system tests > tests/tcg/m68k: add float reference files > tests/tcg/m68k: user tests > scripts/probe-gdb-support.py: add mapping for mips architecture > tests/tcg/mips: add float reference files > test/tcg/mips: user tests > tests/tcg/mips64: add float reference files > tests/tcg/mips64: user tests > tests/tcg/mips64el: add float reference files > tests/tcg/mips64el: user tests > tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k > toolchain > tests/tcg/or1k/test_addic.c: remove unused variables > tests/tcg/or1k/test_muli.c: remove set but unused variable > tests/tcg/or1k: add float reference files > plugins/api.c: identify or1k pc register and mark it as read only > tests/tcg/or1k: user tests > tests/tcg/ppc64: add float reference files > tests/tcg/ppc64: remove dependency on qemu/compiler.h > tests/tcg/ppc64: user tests > tests/tcg/ppc64le: add missing float reference file > tests/tcg/ppc64le: user tests > tests/tcg/riscv64: add float reference files > tests/tcg/riscv64: user tests > tests/tcg/riscv64: system tests > tests/tcg/s390x/head64.S: declare _exit symbol after main > tests/tcg/s390x: add float reference files > tests/tcg/s390x: user tests > tests/tcg/s390x: system tests > tests/tcg/sh4: add float reference files > tests/tcg/sh4: user tests > tests/tcg/tricore: system tests > Revert "tests/tcg/tricore: system tests" > tests/tcg/x86_64: add missing float reference file > tests/tcg/x86_64: user tests > tests/tcg/x86_64: system tests > tests/tcg/xtensa/crt.S: align .text section > tests/tcg/xtensa: system tests > tests: remove tcg tests machinery > tests/tcg: remove Makefiles > configure: remove --cross-cc* options > > configure | 473 --------- > docs/devel/testing/main.rst | 22 +- > plugins/api.c | 2 + > scripts/probe-gdb-support.py | 1 + > tests/Makefile.include | 68 +- > tests/docker/docker.py | 4 +- > .../dockerfiles/debian-all-test-cross.docker | 16 +- > tests/lcitool/refresh | 107 +- > tests/meson.build | 2 +- > tests/tcg/Makefile.target | 281 ----- > tests/tcg/aarch64/Makefile.softmmu-target | 147 --- > tests/tcg/aarch64/Makefile.target | 198 ---- > tests/tcg/aarch64/meson.build | 195 ++++ > tests/tcg/aarch64/system/gpc-test.c | 5 - > tests/tcg/aarch64/system/meson.build | 108 ++ > tests/tcg/aarch64_be/Makefile.target | 17 - > tests/tcg/aarch64_be/meson.build | 22 + > tests/tcg/alpha/Makefile.softmmu-target | 34 - > tests/tcg/alpha/Makefile.target | 18 - > tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ > tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ > tests/tcg/alpha/meson.build | 55 + > tests/tcg/alpha/system/meson.build | 46 + > tests/tcg/arm/Makefile.softmmu-target | 80 -- > tests/tcg/arm/Makefile.target | 87 -- > tests/tcg/arm/meson.build | 80 ++ > tests/tcg/arm/system/meson.build | 66 ++ > tests/tcg/hexagon/Makefile.target | 146 --- > tests/tcg/hexagon/meson.build | 111 ++ > tests/tcg/hexagon/overflow.c | 1 + > tests/tcg/hppa/Makefile.target | 14 - > tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ > tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ > tests/tcg/hppa/meson.build | 22 + > tests/tcg/i386/Makefile.softmmu-target | 37 - > tests/tcg/i386/Makefile.target | 102 -- > tests/tcg/i386/float_convd.conf | 988 ------------------ > tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ > tests/tcg/i386/meson.build | 58 + > tests/tcg/i386/system/meson.build | 48 + > tests/tcg/loongarch64/Makefile.softmmu-target | 33 - > tests/tcg/loongarch64/Makefile.target | 20 - > tests/tcg/loongarch64/meson.build | 32 + > tests/tcg/loongarch64/system/meson.build | 47 + > tests/tcg/m68k/Makefile.target | 7 - > tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ > tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ > tests/tcg/m68k/meson.build | 23 + > tests/tcg/meson.build | 447 ++++++++ > tests/tcg/minilib/Makefile.target | 21 - > tests/tcg/mips/Makefile.target | 19 - > tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips/meson.build | 25 + > tests/tcg/mips/user/ase/dsp/Makefile | 184 ---- > tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 - > tests/tcg/mips/user/isa/r5900/Makefile | 32 - > tests/tcg/mips64/Makefile.target | 20 - > tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64/meson.build | 27 + > tests/tcg/mips64el/Makefile.target | 8 - > tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ > tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ > tests/tcg/mips64el/meson.build | 14 + > tests/tcg/multiarch/Makefile.target | 233 ----- > tests/tcg/multiarch/meson.build | 149 +++ > .../multiarch/plugin/check-plugin-output.sh | 36 - > tests/tcg/multiarch/plugin/regex-compare.sh | 28 + > tests/tcg/multiarch/sha1.c | 4 +- > tests/tcg/multiarch/sha1.ref | 1 + > .../multiarch/system/Makefile.softmmu-target | 81 -- > tests/tcg/multiarch/system/memory.c | 3 +- > tests/tcg/multiarch/system/meson.build | 53 + > tests/tcg/or1k/Makefile | 71 -- > tests/tcg/or1k/float_convd.ref | 247 +++++ > tests/tcg/or1k/float_convs.ref | 187 ++++ > tests/tcg/or1k/float_madds.ref | 192 ++++ > tests/tcg/or1k/meson.build | 72 ++ > tests/tcg/or1k/test_addic.c | 2 +- > tests/tcg/or1k/test_muli.c | 5 +- > tests/tcg/plugins/meson.build | 11 +- > tests/tcg/ppc64/Makefile.target | 63 -- > tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ > tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/ppc64/meson.build | 56 + > tests/tcg/ppc64/vector.c | 11 +- > tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- > tests/tcg/ppc64le/Makefile.target | 7 - > tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/ppc64le/meson.build | 14 + > tests/tcg/riscv64/Makefile.softmmu-target | 45 - > tests/tcg/riscv64/Makefile.target | 20 - > tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ > tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/riscv64/meson.build | 38 + > tests/tcg/riscv64/system/meson.build | 38 + > tests/tcg/s390x/Makefile.softmmu-target | 57 - > tests/tcg/s390x/Makefile.target | 127 --- > tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ > tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ > tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ > tests/tcg/s390x/head64.S | 2 + > tests/tcg/s390x/meson.build | 140 +++ > tests/tcg/s390x/system/meson.build | 92 ++ > tests/tcg/scripts/check_plugin_output.sh | 25 + > tests/tcg/scripts/record_replay.sh | 16 + > .../scripts/run_and_check_forbidden_output.sh | 19 + > tests/tcg/scripts/run_and_diff.sh | 15 + > tests/tcg/scripts/run_with_input.sh | 12 + > tests/tcg/sh4/Makefile.target | 18 - > tests/tcg/sh4/float_convd.ref | 494 +++++++++ > tests/tcg/sh4/float_convs.ref | 374 +++++++ > tests/tcg/sh4/float_madds.ref | 384 +++++++ > tests/tcg/sh4/meson.build | 25 + > tests/tcg/tricore/Makefile.softmmu-target | 53 - > tests/tcg/x86_64/Makefile.softmmu-target | 44 - > tests/tcg/x86_64/Makefile.target | 40 - > tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ > tests/tcg/x86_64/meson.build | 83 ++ > tests/tcg/x86_64/system/meson.build | 62 ++ > tests/tcg/xtensa/Makefile.softmmu-target | 46 - > tests/tcg/xtensa/crt.S | 1 + > tests/tcg/xtensa/meson.build | 89 ++ > tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - > 134 files changed, 30491 insertions(+), 4114 deletions(-) > delete mode 100644 tests/tcg/Makefile.target > delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/aarch64/Makefile.target > create mode 100644 tests/tcg/aarch64/meson.build > create mode 100644 tests/tcg/aarch64/system/meson.build > delete mode 100644 tests/tcg/aarch64_be/Makefile.target > create mode 100644 tests/tcg/aarch64_be/meson.build > delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target > delete mode 100644 tests/tcg/alpha/Makefile.target > create mode 100644 tests/tcg/alpha/float_convd.ref > create mode 100644 tests/tcg/alpha/float_convs.ref > create mode 100644 tests/tcg/alpha/float_madds.ref > create mode 100644 tests/tcg/alpha/meson.build > create mode 100644 tests/tcg/alpha/system/meson.build > delete mode 100644 tests/tcg/arm/Makefile.softmmu-target > delete mode 100644 tests/tcg/arm/Makefile.target > create mode 100644 tests/tcg/arm/meson.build > create mode 100644 tests/tcg/arm/system/meson.build > delete mode 100644 tests/tcg/hexagon/Makefile.target > create mode 100644 tests/tcg/hexagon/meson.build > delete mode 100644 tests/tcg/hppa/Makefile.target > create mode 100644 tests/tcg/hppa/float_convd.ref > create mode 100644 tests/tcg/hppa/float_convs.ref > create mode 100644 tests/tcg/hppa/float_madds.ref > create mode 100644 tests/tcg/hppa/meson.build > delete mode 100644 tests/tcg/i386/Makefile.softmmu-target > delete mode 100644 tests/tcg/i386/Makefile.target > delete mode 100644 tests/tcg/i386/float_convd.conf > create mode 100644 tests/tcg/i386/float_convd.ref > create mode 100644 tests/tcg/i386/float_madds.ref > create mode 100644 tests/tcg/i386/meson.build > create mode 100644 tests/tcg/i386/system/meson.build > delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target > delete mode 100644 tests/tcg/loongarch64/Makefile.target > create mode 100644 tests/tcg/loongarch64/meson.build > create mode 100644 tests/tcg/loongarch64/system/meson.build > delete mode 100644 tests/tcg/m68k/Makefile.target > create mode 100644 tests/tcg/m68k/float_convd.ref > create mode 100644 tests/tcg/m68k/float_convs.ref > create mode 100644 tests/tcg/m68k/float_madds.ref > create mode 100644 tests/tcg/m68k/meson.build > create mode 100644 tests/tcg/meson.build > delete mode 100644 tests/tcg/minilib/Makefile.target > delete mode 100644 tests/tcg/mips/Makefile.target > create mode 100644 tests/tcg/mips/float_convd.ref > create mode 100644 tests/tcg/mips/float_convs.ref > create mode 100644 tests/tcg/mips/float_madds.ref > create mode 100644 tests/tcg/mips/meson.build > delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile > delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile > delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile > delete mode 100644 tests/tcg/mips64/Makefile.target > create mode 100644 tests/tcg/mips64/float_convd.ref > create mode 100644 tests/tcg/mips64/float_convs.ref > create mode 100644 tests/tcg/mips64/float_madds.ref > create mode 100644 tests/tcg/mips64/meson.build > delete mode 100644 tests/tcg/mips64el/Makefile.target > create mode 100644 tests/tcg/mips64el/float_convd.ref > create mode 100644 tests/tcg/mips64el/float_convs.ref > create mode 100644 tests/tcg/mips64el/float_madds.ref > create mode 100644 tests/tcg/mips64el/meson.build > delete mode 100644 tests/tcg/multiarch/Makefile.target > create mode 100644 tests/tcg/multiarch/meson.build > delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh > create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh > create mode 100644 tests/tcg/multiarch/sha1.ref > delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target > create mode 100644 tests/tcg/multiarch/system/meson.build > delete mode 100644 tests/tcg/or1k/Makefile > create mode 100644 tests/tcg/or1k/float_convd.ref > create mode 100644 tests/tcg/or1k/float_convs.ref > create mode 100644 tests/tcg/or1k/float_madds.ref > create mode 100644 tests/tcg/or1k/meson.build > delete mode 100644 tests/tcg/ppc64/Makefile.target > create mode 100644 tests/tcg/ppc64/float_convd.ref > create mode 100644 tests/tcg/ppc64/float_convs.ref > create mode 100644 tests/tcg/ppc64/float_madds.ref > create mode 100644 tests/tcg/ppc64/meson.build > delete mode 100644 tests/tcg/ppc64le/Makefile.target > create mode 100644 tests/tcg/ppc64le/float_convd.ref > create mode 100644 tests/tcg/ppc64le/meson.build > delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target > delete mode 100644 tests/tcg/riscv64/Makefile.target > create mode 100644 tests/tcg/riscv64/float_convd.ref > create mode 100644 tests/tcg/riscv64/float_convs.ref > create mode 100644 tests/tcg/riscv64/float_madds.ref > create mode 100644 tests/tcg/riscv64/meson.build > create mode 100644 tests/tcg/riscv64/system/meson.build > delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target > delete mode 100644 tests/tcg/s390x/Makefile.target > create mode 100644 tests/tcg/s390x/float_convd.ref > create mode 100644 tests/tcg/s390x/float_convs.ref > create mode 100644 tests/tcg/s390x/float_madds.ref > create mode 100644 tests/tcg/s390x/meson.build > create mode 100644 tests/tcg/s390x/system/meson.build > create mode 100755 tests/tcg/scripts/check_plugin_output.sh > create mode 100755 tests/tcg/scripts/record_replay.sh > create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh > create mode 100755 tests/tcg/scripts/run_and_diff.sh > create mode 100755 tests/tcg/scripts/run_with_input.sh > delete mode 100644 tests/tcg/sh4/Makefile.target > create mode 100644 tests/tcg/sh4/float_convd.ref > create mode 100644 tests/tcg/sh4/float_convs.ref > create mode 100644 tests/tcg/sh4/float_madds.ref > create mode 100644 tests/tcg/sh4/meson.build > delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target > delete mode 100644 tests/tcg/x86_64/Makefile.target > create mode 100644 tests/tcg/x86_64/float_madds.ref > create mode 100644 tests/tcg/x86_64/meson.build > create mode 100644 tests/tcg/x86_64/system/meson.build > delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target > create mode 100644 tests/tcg/xtensa/meson.build > delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target -- Alex Bennée Virtualisation Tech Lead @ Linaro
© 2016 - 2026 Red Hat, Inc.