On Mon, Dec 10, 2018 at 03:28:16PM +0000, Alex Bennée wrote: > Hi, > > This is very much a work in progress but I'm posting it in the hope of > getting some feedback from the architecture maintainers. > > When I originally enabled tcg tests I only enabled linux-user tests for > architectures that had easily available compilers. I also skipped over a > bunch of the tests that were already in the tree but didn't build. > > Enabling the building of system tests is actually fairly simple. The > patch introduces the concept of Makefile.softmmu-target so we can keep > the build rules nicely separated from that of linux-user targets. > > I've enabled system builds for xtensa, cris and mips64. However they all > have some niggles that need sorting out. > > Xtensa > > The tests all build and run manually but for some reason running under > make break. I think this is something to do with the monitor being > involved in the semihosting output. > > MIPS > > The existing mips tests are split between 32 bit which are linux-user > tests. I've enabled a chunk of these but adding the mips32r2 aran into > problems with make which I haven't yet figured out despite having > targets in different build directories. The mipsr5900 build is limited > by the fact that upstream GCC doesn't seem to support the build type. > > The 64 bit mips tests are system tests and are built for the > mips64el-softmmu target. Getting them to build has been more problematic > possibly because there is a bunch of target flags I don't understand. > For example why does FLAGS define have -march=mips64r2 for the mip64-dsp > target? > > I could do with some guidance from the MIPS guys here about the right > toolchain and build options. > > CRIS > > Again I've gotten these building. I had to skip a bunch of tests because > it seems the upstream cris compiler: > > cris-linux-gnu-gcc (GCC) 7.2.1 20170915 (Red Hat Cross 7.2.1-1) > > Can't build all the cris tests because it doesn't support all the > versions of the architecture. Secondly I'm not sure how these tests are > meant to be invoked within QEMU. They originally come from the binutils > simulator (SIM) and are split into ctst (linux-user) and tst (simulator) > tests. As we can only build system tests with the cris cross compiler > I've stuck to those but I'm unsure how they are meant to be invoked.
Hi Alex, The Makefile has run rules for running these, make check. make check-g is for comparing with GDB's cris simulator. Some tests target cris-v10 (actually v17 which is an extended v10) and others target cris-v32. v10 and v32 are quite different. In the old days, we used to have a crisv32- toolchain that would default to building cris-v32 binaries but could also build cris-v10 binaries when -mcpu=v10 was used. It may be the case that your toolchain defaults to v10 but can build v32 binaries with -mcpu=v32, I don't know. In any case, it may be better to change the Makefile to always be explicit about the -mcpu instead of assuming v32 per default. I hope that helps a little a least! Best regards, Edgar > > I actually started down this road to add Stefan's microbit tests to the > build. You can see this commit: > > [https://github.com/stsquad/qemu/commit/727e106204e867cc42dc8fa44f84b013c7f7fcb7] > > For how easy it was to add. As this is an RFC I've included all the > aspirational work in progress for our more esoteric architectures so > maintainers can have a play. The next iteration of the series will only > include working patches ;-) > > Alex Bennée (12): > tests/tcg: add softmmu awareness to Makefile > tests: enable tcg tests for softmmu > tests/tcg: add QEMU_OPT option for test runner > tests/tcg/mips: enable mips32-dsp/mips32-dspr2/mipsr5900 linux-user > (WIP) > tests/tcg/mips: enable mips64 system tests (WIP) > tests/tcg/xtensa: enable system tests > tests/docker: add fedora-cris-cross compilers > tests/tcg: split cris tests into system and user mode > tests/tcg/cris: cleanup sys.c > tests/tcg/cris: comment out the ccs test > tests/tcg/cris: align mul operations > tests/tcg: enable cris system tests > > Philippe Mathieu-Daudé (1): > tests/docker: add debian-xtensa-cross image > > Makefile.target | 2 - > tests/Makefile.include | 7 +- > tests/docker/Makefile.include | 1 + > .../dockerfiles/debian-xtensa-cross.docker | 31 ++ > .../dockerfiles/fedora-cris-cross.docker | 8 + > tests/tcg/Makefile | 21 +- > tests/tcg/Makefile.include | 2 +- > tests/tcg/cris/Makefile | 168 --------- > tests/tcg/cris/Makefile.include | 6 + > tests/tcg/cris/Makefile.softmmu-target | 50 +++ > tests/tcg/cris/sys.c | 59 --- > tests/tcg/cris/{ => system}/check_addcv17.s | 0 > tests/tcg/cris/{ => system}/check_addi.s | 0 > tests/tcg/cris/{ => system}/check_addiv32.s | 0 > tests/tcg/cris/{ => system}/check_addm.s | 0 > tests/tcg/cris/{ => system}/check_addq.s | 0 > tests/tcg/cris/{ => system}/check_addr.s | 0 > tests/tcg/cris/{ => system}/check_addxc.s | 0 > tests/tcg/cris/{ => system}/check_addxm.s | 0 > tests/tcg/cris/{ => system}/check_addxr.s | 0 > tests/tcg/cris/{ => system}/check_andc.s | 0 > tests/tcg/cris/{ => system}/check_andm.s | 0 > tests/tcg/cris/{ => system}/check_andq.s | 0 > tests/tcg/cris/{ => system}/check_andr.s | 0 > tests/tcg/cris/{ => system}/check_asr.s | 0 > tests/tcg/cris/{ => system}/check_ba.s | 0 > tests/tcg/cris/{ => system}/check_bas.s | 0 > tests/tcg/cris/{ => system}/check_bcc.s | 0 > tests/tcg/cris/{ => system}/check_boundc.s | 0 > tests/tcg/cris/{ => system}/check_boundr.s | 0 > tests/tcg/cris/{ => system}/check_btst.s | 14 +- > tests/tcg/cris/{ => system}/check_clearfv32.s | 0 > tests/tcg/cris/{ => system}/check_clrjmp1.s | 0 > tests/tcg/cris/{ => system}/check_cmp-2.s | 0 > tests/tcg/cris/{ => system}/check_cmpc.s | 0 > tests/tcg/cris/{ => system}/check_cmpm.s | 0 > tests/tcg/cris/{ => system}/check_cmpq.s | 0 > tests/tcg/cris/{ => system}/check_cmpr.s | 0 > tests/tcg/cris/{ => system}/check_cmpxc.s | 0 > tests/tcg/cris/{ => system}/check_cmpxm.s | 0 > tests/tcg/cris/{ => system}/check_dstep.s | 0 > tests/tcg/cris/{ => system}/check_jsr.s | 0 > tests/tcg/cris/{ => system}/check_lapc.s | 0 > tests/tcg/cris/{ => system}/check_lsl.s | 0 > tests/tcg/cris/{ => system}/check_lsr.s | 0 > tests/tcg/cris/{ => system}/check_mcp.s | 0 > tests/tcg/cris/{ => system}/check_movdelsr1.s | 0 > tests/tcg/cris/{ => system}/check_movecr.s | 0 > tests/tcg/cris/{ => system}/check_movei.s | 0 > tests/tcg/cris/{ => system}/check_movemr.s | 0 > tests/tcg/cris/{ => system}/check_movemrv32.s | 0 > tests/tcg/cris/{ => system}/check_mover.s | 0 > tests/tcg/cris/{ => system}/check_moverm.s | 0 > tests/tcg/cris/{ => system}/check_movmp.s | 0 > tests/tcg/cris/{ => system}/check_movpmv32.s | 0 > tests/tcg/cris/{ => system}/check_movpr.s | 0 > tests/tcg/cris/{ => system}/check_movprv32.s | 0 > tests/tcg/cris/{ => system}/check_movscr.s | 0 > tests/tcg/cris/{ => system}/check_movsm.s | 0 > tests/tcg/cris/{ => system}/check_movsr.s | 0 > tests/tcg/cris/{ => system}/check_movucr.s | 0 > tests/tcg/cris/{ => system}/check_movum.s | 0 > tests/tcg/cris/{ => system}/check_movur.s | 0 > tests/tcg/cris/{ => system}/check_mulv32.s | 0 > tests/tcg/cris/{ => system}/check_mulx.s | 11 + > tests/tcg/cris/{ => system}/check_neg.s | 0 > tests/tcg/cris/{ => system}/check_not.s | 0 > tests/tcg/cris/{ => system}/check_orc.s | 0 > tests/tcg/cris/{ => system}/check_orm.s | 0 > tests/tcg/cris/{ => system}/check_orq.s | 0 > tests/tcg/cris/{ => system}/check_orr.s | 0 > tests/tcg/cris/{ => system}/check_ret.s | 0 > tests/tcg/cris/{ => system}/check_scc.s | 0 > tests/tcg/cris/{ => system}/check_subc.s | 0 > tests/tcg/cris/{ => system}/check_subm.s | 0 > tests/tcg/cris/{ => system}/check_subq.s | 0 > tests/tcg/cris/{ => system}/check_subr.s | 0 > tests/tcg/cris/{ => system}/check_xarith.s | 0 > tests/tcg/cris/{ => system}/crt.s | 0 > tests/tcg/cris/system/sys.c | 59 +++ > tests/tcg/cris/{ => system}/testutils.inc | 0 > tests/tcg/cris/{ => user}/check_abs.c | 0 > tests/tcg/cris/{ => user}/check_addc.c | 0 > tests/tcg/cris/{ => user}/check_addcm.c | 0 > tests/tcg/cris/{ => user}/check_addo.c | 0 > tests/tcg/cris/{ => user}/check_addoq.c | 0 > tests/tcg/cris/{ => user}/check_bound.c | 0 > tests/tcg/cris/{ => user}/check_ftag.c | 0 > .../{ => user}/check_glibc_kernelversion.c | 0 > tests/tcg/cris/{ => user}/check_hello.c | 0 > tests/tcg/cris/{ => user}/check_int64.c | 0 > tests/tcg/cris/{ => user}/check_lz.c | 0 > tests/tcg/cris/{ => user}/check_mapbrk.c | 0 > tests/tcg/cris/{ => user}/check_mmap1.c | 0 > tests/tcg/cris/{ => user}/check_mmap2.c | 0 > tests/tcg/cris/{ => user}/check_mmap3.c | 0 > tests/tcg/cris/{ => user}/check_moveq.c | 0 > tests/tcg/cris/{ => user}/check_openpf1.c | 0 > tests/tcg/cris/{ => user}/check_openpf2.c | 0 > tests/tcg/cris/{ => user}/check_openpf3.c | 0 > tests/tcg/cris/{ => user}/check_openpf5.c | 0 > tests/tcg/cris/{ => user}/check_settls1.c | 0 > tests/tcg/cris/{ => user}/check_sigalrm.c | 0 > tests/tcg/cris/{ => user}/check_stat1.c | 0 > tests/tcg/cris/{ => user}/check_stat2.c | 0 > tests/tcg/cris/{ => user}/check_stat3.c | 0 > tests/tcg/cris/{ => user}/check_stat4.c | 0 > tests/tcg/cris/{ => user}/check_swap.c | 0 > tests/tcg/cris/{ => user}/check_time2.c | 0 > tests/tcg/cris/{ => user}/crisutils.h | 0 > tests/tcg/cris/{ => user}/sys.h | 0 > tests/tcg/mips/Makefile.softmmu-target | 20 ++ > tests/tcg/mips/Makefile.target | 15 +- > tests/tcg/mips/mips32-dsp/Makefile | 166 ++------- > tests/tcg/mips/mips32-dspr2/Makefile | 83 +---- > tests/tcg/mips/mips64-dsp/Makefile | 336 +++--------------- > tests/tcg/mips/mipsr5900/Makefile | 40 +-- > tests/tcg/xtensa/Makefile | 93 ----- > tests/tcg/xtensa/Makefile.include | 7 + > tests/tcg/xtensa/Makefile.softmmu-target | 43 +++ > 120 files changed, 385 insertions(+), 857 deletions(-) > create mode 100644 tests/docker/dockerfiles/debian-xtensa-cross.docker > create mode 100644 tests/docker/dockerfiles/fedora-cris-cross.docker > delete mode 100644 tests/tcg/cris/Makefile > create mode 100644 tests/tcg/cris/Makefile.include > create mode 100644 tests/tcg/cris/Makefile.softmmu-target > delete mode 100644 tests/tcg/cris/sys.c > rename tests/tcg/cris/{ => system}/check_addcv17.s (100%) > rename tests/tcg/cris/{ => system}/check_addi.s (100%) > rename tests/tcg/cris/{ => system}/check_addiv32.s (100%) > rename tests/tcg/cris/{ => system}/check_addm.s (100%) > rename tests/tcg/cris/{ => system}/check_addq.s (100%) > rename tests/tcg/cris/{ => system}/check_addr.s (100%) > rename tests/tcg/cris/{ => system}/check_addxc.s (100%) > rename tests/tcg/cris/{ => system}/check_addxm.s (100%) > rename tests/tcg/cris/{ => system}/check_addxr.s (100%) > rename tests/tcg/cris/{ => system}/check_andc.s (100%) > rename tests/tcg/cris/{ => system}/check_andm.s (100%) > rename tests/tcg/cris/{ => system}/check_andq.s (100%) > rename tests/tcg/cris/{ => system}/check_andr.s (100%) > rename tests/tcg/cris/{ => system}/check_asr.s (100%) > rename tests/tcg/cris/{ => system}/check_ba.s (100%) > rename tests/tcg/cris/{ => system}/check_bas.s (100%) > rename tests/tcg/cris/{ => system}/check_bcc.s (100%) > rename tests/tcg/cris/{ => system}/check_boundc.s (100%) > rename tests/tcg/cris/{ => system}/check_boundr.s (100%) > rename tests/tcg/cris/{ => system}/check_btst.s (89%) > rename tests/tcg/cris/{ => system}/check_clearfv32.s (100%) > rename tests/tcg/cris/{ => system}/check_clrjmp1.s (100%) > rename tests/tcg/cris/{ => system}/check_cmp-2.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpc.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpm.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpq.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpr.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpxc.s (100%) > rename tests/tcg/cris/{ => system}/check_cmpxm.s (100%) > rename tests/tcg/cris/{ => system}/check_dstep.s (100%) > rename tests/tcg/cris/{ => system}/check_jsr.s (100%) > rename tests/tcg/cris/{ => system}/check_lapc.s (100%) > rename tests/tcg/cris/{ => system}/check_lsl.s (100%) > rename tests/tcg/cris/{ => system}/check_lsr.s (100%) > rename tests/tcg/cris/{ => system}/check_mcp.s (100%) > rename tests/tcg/cris/{ => system}/check_movdelsr1.s (100%) > rename tests/tcg/cris/{ => system}/check_movecr.s (100%) > rename tests/tcg/cris/{ => system}/check_movei.s (100%) > rename tests/tcg/cris/{ => system}/check_movemr.s (100%) > rename tests/tcg/cris/{ => system}/check_movemrv32.s (100%) > rename tests/tcg/cris/{ => system}/check_mover.s (100%) > rename tests/tcg/cris/{ => system}/check_moverm.s (100%) > rename tests/tcg/cris/{ => system}/check_movmp.s (100%) > rename tests/tcg/cris/{ => system}/check_movpmv32.s (100%) > rename tests/tcg/cris/{ => system}/check_movpr.s (100%) > rename tests/tcg/cris/{ => system}/check_movprv32.s (100%) > rename tests/tcg/cris/{ => system}/check_movscr.s (100%) > rename tests/tcg/cris/{ => system}/check_movsm.s (100%) > rename tests/tcg/cris/{ => system}/check_movsr.s (100%) > rename tests/tcg/cris/{ => system}/check_movucr.s (100%) > rename tests/tcg/cris/{ => system}/check_movum.s (100%) > rename tests/tcg/cris/{ => system}/check_movur.s (100%) > rename tests/tcg/cris/{ => system}/check_mulv32.s (100%) > rename tests/tcg/cris/{ => system}/check_mulx.s (98%) > rename tests/tcg/cris/{ => system}/check_neg.s (100%) > rename tests/tcg/cris/{ => system}/check_not.s (100%) > rename tests/tcg/cris/{ => system}/check_orc.s (100%) > rename tests/tcg/cris/{ => system}/check_orm.s (100%) > rename tests/tcg/cris/{ => system}/check_orq.s (100%) > rename tests/tcg/cris/{ => system}/check_orr.s (100%) > rename tests/tcg/cris/{ => system}/check_ret.s (100%) > rename tests/tcg/cris/{ => system}/check_scc.s (100%) > rename tests/tcg/cris/{ => system}/check_subc.s (100%) > rename tests/tcg/cris/{ => system}/check_subm.s (100%) > rename tests/tcg/cris/{ => system}/check_subq.s (100%) > rename tests/tcg/cris/{ => system}/check_subr.s (100%) > rename tests/tcg/cris/{ => system}/check_xarith.s (100%) > rename tests/tcg/cris/{ => system}/crt.s (100%) > create mode 100644 tests/tcg/cris/system/sys.c > rename tests/tcg/cris/{ => system}/testutils.inc (100%) > rename tests/tcg/cris/{ => user}/check_abs.c (100%) > rename tests/tcg/cris/{ => user}/check_addc.c (100%) > rename tests/tcg/cris/{ => user}/check_addcm.c (100%) > rename tests/tcg/cris/{ => user}/check_addo.c (100%) > rename tests/tcg/cris/{ => user}/check_addoq.c (100%) > rename tests/tcg/cris/{ => user}/check_bound.c (100%) > rename tests/tcg/cris/{ => user}/check_ftag.c (100%) > rename tests/tcg/cris/{ => user}/check_glibc_kernelversion.c (100%) > rename tests/tcg/cris/{ => user}/check_hello.c (100%) > rename tests/tcg/cris/{ => user}/check_int64.c (100%) > rename tests/tcg/cris/{ => user}/check_lz.c (100%) > rename tests/tcg/cris/{ => user}/check_mapbrk.c (100%) > rename tests/tcg/cris/{ => user}/check_mmap1.c (100%) > rename tests/tcg/cris/{ => user}/check_mmap2.c (100%) > rename tests/tcg/cris/{ => user}/check_mmap3.c (100%) > rename tests/tcg/cris/{ => user}/check_moveq.c (100%) > rename tests/tcg/cris/{ => user}/check_openpf1.c (100%) > rename tests/tcg/cris/{ => user}/check_openpf2.c (100%) > rename tests/tcg/cris/{ => user}/check_openpf3.c (100%) > rename tests/tcg/cris/{ => user}/check_openpf5.c (100%) > rename tests/tcg/cris/{ => user}/check_settls1.c (100%) > rename tests/tcg/cris/{ => user}/check_sigalrm.c (100%) > rename tests/tcg/cris/{ => user}/check_stat1.c (100%) > rename tests/tcg/cris/{ => user}/check_stat2.c (100%) > rename tests/tcg/cris/{ => user}/check_stat3.c (100%) > rename tests/tcg/cris/{ => user}/check_stat4.c (100%) > rename tests/tcg/cris/{ => user}/check_swap.c (100%) > rename tests/tcg/cris/{ => user}/check_time2.c (100%) > rename tests/tcg/cris/{ => user}/crisutils.h (100%) > rename tests/tcg/cris/{ => user}/sys.h (100%) > create mode 100644 tests/tcg/mips/Makefile.softmmu-target > delete mode 100644 tests/tcg/xtensa/Makefile > create mode 100644 tests/tcg/xtensa/Makefile.include > create mode 100644 tests/tcg/xtensa/Makefile.softmmu-target > > -- > 2.17.1 >