From cd7507cbfe1e57719290efa6fb086968e2bb4c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 20 Feb 2019 20:35:41 +0100 Subject: [PATCH 01/26] travis: Bump Xcode 10 image to 10.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Travis enforce the use of the git protocol v2 on their images, but the 'xcode10' image doesn't handle this correctly, resulting in the brew packages installation failing: $ git config protocol.version 2 $ rvm $brew_ruby do brew bundle --verbose --global /usr/local/bin/brew tap homebrew/bundle ==> Tapping homebrew/bundle Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-bundle'... fatal: unknown value for config 'protocol.version': 2 Error: Failure while executing; `git clone https://github.com/Homebrew/homebrew-bundle /usr/local/Homebrew/Library/Taps/homebrew/homebrew-bundle --depth=1` exited with 128. Error: Failure while executing; `/usr/local/bin/brew tap homebrew/bundle` exited with 1. The newer 'xcode10.2' beta [*] image doesn't have this limitation. This image comes with the following brew packages pre-installed, which extend the current code coverage: - libffi - libpng - libtasn1 - gnutls - jpeg - nettle [*] https://blog.travis-ci.com/2019-02-12-xcode-10-2-beta-2-is-now-available Signed-off-by: Philippe Mathieu-Daudé Message-Id: <20190220193541.24419-1-philmd@redhat.com> [AJB: re-enabled MacOS build first] Signed-off-by: Alex Bennée --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index e942175dd3..ecaea97650 100644 --- a/.travis.yml +++ b/.travis.yml @@ -185,6 +185,13 @@ matrix: compiler: clang + - env: + - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" + os: osx + osx_image: xcode10.2 + compiler: clang + + # Python builds - env: - CONFIG="--target-list=x86_64-softmmu" From 956d4506736da3c157c91f3f0d63d38be390c620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 8 Mar 2019 15:48:08 +0000 Subject: [PATCH 02/26] .travis.yml: combine docs and tools build with out-of-tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We will be moving all builds out of tree eventually but for now we need to for building the docs as sphinx requires an out-of-tree build. Signed-off-by: Alex Bennée --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index ecaea97650..c46b0c28df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -114,8 +114,9 @@ matrix: - TEST_CMD="make check-unit -j3 V=1" - # Check we can build docs and tools + # Check we can build docs and tools (out of tree) - env: + - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." - BASE_CONFIG="--enable-tools --enable-docs" - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" addons: @@ -125,11 +126,6 @@ matrix: - texinfo - perl - # Test out-of-tree builds - - env: - - CONFIG="--enable-debug --enable-debug-tcg" - - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." - # Test with Clang for compile portability (Travis uses clang-5.0) - env: From 2f6c2526282926b4e7ed2380eb8cfcaa1dd025bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 8 Mar 2019 15:52:13 +0000 Subject: [PATCH 03/26] .travis.yml: reduce the module builds to major architectures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The --enable-modules build is consistently tripping the time limit so reduce our target list to the "major" architectures. Signed-off-by: Alex Bennée --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c46b0c28df..d5c9bbf1b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -98,8 +98,9 @@ matrix: - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-user --disable-replication" + # Module builds are mostly of interest to major distros - env: - - CONFIG="--enable-modules --disable-linux-user" + - CONFIG="--enable-modules --target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" # Alternate coroutines implementations are only really of interest to KVM users From 08a742c89c7d4fbed4ed7b81872c4cbecabe4ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 11 Mar 2019 16:12:53 +0000 Subject: [PATCH 04/26] Makefile: explicitly pass $(SRC_PATH) to gcovr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In an out-of-tree build gcovr can get quite confused about what is going on otherwise. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6ccb8639b0..7202ac76dc 100644 --- a/Makefile +++ b/Makefile @@ -964,7 +964,7 @@ $(filter %.1 %.7 %.8,$(DOCS)): scripts/texi2pod.pl %/coverage-report.html: @mkdir -p $* $(call quiet-command,\ - gcovr -p --html --html-details -o $@, \ + gcovr -r $(SRC_PATH) -p --html --html-details -o $@, \ "GEN", "coverage-report.html") .PHONY: coverage-report From 337f2311f94aecefc3a8e09d3f8ebea563b459ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Tue, 12 Mar 2019 09:18:31 +0000 Subject: [PATCH 05/26] Makefile: explicitly pass $(BUILD_DIR) to gcovr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Best to be explicit about where to find things. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7202ac76dc..248fe9db7b 100644 --- a/Makefile +++ b/Makefile @@ -964,7 +964,8 @@ $(filter %.1 %.7 %.8,$(DOCS)): scripts/texi2pod.pl %/coverage-report.html: @mkdir -p $* $(call quiet-command,\ - gcovr -r $(SRC_PATH) -p --html --html-details -o $@, \ + gcovr -r $(SRC_PATH) --object-directory $(BUILD_PATH) \ + -p --html --html-details -o $@, \ "GEN", "coverage-report.html") .PHONY: coverage-report From bd15e6e004061b4f5916ca780a6df67e0ccf2d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 29 Nov 2018 22:19:21 +0000 Subject: [PATCH 06/26] tests/tcg: add softmmu awareness to Makefile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson --- tests/tcg/Makefile | 17 ++++++++++++++++- tests/tcg/Makefile.include | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index bf06415390..55feab0f67 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -26,7 +26,7 @@ # # We also accept SPEED=slow to enable slower running tests # -# We also expect to be in the tests build dir for the FOO-linux-user. +# We also expect to be in the tests build dir for the FOO-(linux-user|softmmu). # -include ../../config-host.mak @@ -52,7 +52,11 @@ QEMU_CFLAGS= LDFLAGS= # The QEMU for this TARGET +ifdef CONFIG_USER_ONLY QEMU=../qemu-$(TARGET_NAME) +else +QEMU=../qemu-system-$(TARGET_NAME) +endif # If TCG debugging is enabled things are a lot slower ifeq ($(CONFIG_DEBUG_TCG),y) @@ -61,6 +65,7 @@ else TIMEOUT=15 endif +ifdef CONFIG_USER_ONLY # The order we include is important. We include multiarch, base arch # and finally arch if it's not the same as base arch. -include $(SRC_PATH)/tests/tcg/multiarch/Makefile.target @@ -77,6 +82,16 @@ endif %: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) +else +# For softmmu targets we include a different Makefile fragement as the +# build options for bare programs are usually pretty different. They +# are expected to provide their own build recipes. +-include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.softmmu-target +ifneq ($(TARGET_BASE_ARCH),$(TARGET_NAME)) +-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target +endif + +endif all: $(TESTS) diff --git a/tests/tcg/Makefile.include b/tests/tcg/Makefile.include index c581bd6ffc..73b5626fc5 100644 --- a/tests/tcg/Makefile.include +++ b/tests/tcg/Makefile.include @@ -67,7 +67,7 @@ endif ifneq ($(GUEST_BUILD),) guest-tests: $(GUEST_BUILD) -run-guest-tests: guest-tests qemu-$(TARGET_NAME) +run-guest-tests: guest-tests qemu-$(subst y,system-,$(CONFIG_SOFTMMU))$(TARGET_NAME) $(call quiet-command, \ (cd tests && $(MAKE) -f $(TCG_MAKE) SPEED=$(SPEED) run), \ "RUN", "tests for $(TARGET_NAME)") From e24e66f06d152151cd876210e001b21aa3bb86c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 29 Nov 2018 22:21:50 +0000 Subject: [PATCH 07/26] tests/tcg: enable tcg tests for softmmu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson --- Makefile.target | 2 -- tests/Makefile.include | 7 +++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Makefile.target b/Makefile.target index d8048aab8f..ae02495951 100644 --- a/Makefile.target +++ b/Makefile.target @@ -40,9 +40,7 @@ PROGS=$(QEMU_PROG) $(QEMU_PROGW) STPFILES= # Makefile Tests -ifdef CONFIG_USER_ONLY include $(SRC_PATH)/tests/tcg/Makefile.include -endif config-target.h: config-target.h-timestamp config-target.h-timestamp: config-target.mak diff --git a/tests/Makefile.include b/tests/Makefile.include index a5719551dd..75b682cbe8 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -1061,10 +1061,9 @@ endif # Per guest TCG tests -LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS)) -BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(LINUX_USER_TARGETS)) -CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARGETS)) -RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS)) +BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TARGET_DIRS)) +CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGET_DIRS)) +RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS)) ifeq ($(HAVE_USER_DOCKER),y) # Probe for the Docker Builds needed for each build From 3d55c026241d2717b3fd97800889c19fad7b6ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 6 Dec 2018 11:09:17 +0000 Subject: [PATCH 08/26] tests/tcg: add QEMU_OPT option for test runner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow tests to modify the QEMU invocation with for example different -cpu stazas without having to define a whole new set of runner types. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson --- tests/tcg/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index 55feab0f67..454d0a4119 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -54,10 +54,13 @@ LDFLAGS= # The QEMU for this TARGET ifdef CONFIG_USER_ONLY QEMU=../qemu-$(TARGET_NAME) +QEMU_OPTS= else QEMU=../qemu-system-$(TARGET_NAME) +QEMU_OPTS=-monitor none -display none endif + # If TCG debugging is enabled things are a lot slower ifeq ($(CONFIG_DEBUG_TCG),y) TIMEOUT=45 @@ -108,7 +111,7 @@ RUN_TESTS=$(patsubst %,run-%, $(TESTS)) RUN_TESTS+=$(EXTRA_RUNS) run-%: % - $(call run-test, $<, $(QEMU) $<, "$< on $(TARGET_NAME)") + $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<, "$< on $(TARGET_NAME)") .PHONY: run run: $(RUN_TESTS) From fdfda70e282a6983b6f46e942162e14621ca268f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Tue, 12 Mar 2019 14:13:16 +0000 Subject: [PATCH 09/26] tests/tcg: split run-test into user and system variants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We can't rely on shell redirect magic to get things right so lets setup a common output chardev that is expecting to write to files. As we have split run-test up we might as well move the default monitor bits into the call. Finally a little make sophistry is required to correctly quote $(COMMA) and as we don't inherit common rules we have our own little copy here. Signed-off-by: Alex Bennée --- tests/tcg/Makefile | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index 454d0a4119..d26a36df61 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -32,10 +32,17 @@ -include ../../config-host.mak -include ../config-target.mak +# for including , in command strings +COMMA := , + quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1)) # $1 = test name, $2 = cmd, $3 = desc +ifdef CONFIG_USER_ONLY run-test = $(call quiet-command, timeout $(TIMEOUT) $2 > $1.out,"TEST",$3) +else +run-test = $(call quiet-command, timeout $(TIMEOUT) $2,"TEST",$3) +endif # $1 = test name, $2 = reference diff-out = $(call quiet-command, diff -u $1.out $2 | head -n 10,"DIFF","$1.out with $2") @@ -54,11 +61,10 @@ LDFLAGS= # The QEMU for this TARGET ifdef CONFIG_USER_ONLY QEMU=../qemu-$(TARGET_NAME) -QEMU_OPTS= else QEMU=../qemu-system-$(TARGET_NAME) -QEMU_OPTS=-monitor none -display none endif +QEMU_OPTS= # If TCG debugging is enabled things are a lot slower @@ -110,8 +116,17 @@ all: $(TESTS) RUN_TESTS=$(patsubst %,run-%, $(TESTS)) RUN_TESTS+=$(EXTRA_RUNS) +ifdef CONFIG_USER_ONLY run-%: % $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<, "$< on $(TARGET_NAME)") +else +run-%: % + $(call run-test, $<, \ + $(QEMU) -monitor none -display none \ + -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ + $(QEMU_OPTS) $<, \ + "$< on $(TARGET_NAME)") +endif .PHONY: run run: $(RUN_TESTS) From d0ce6257c660d202aff160eedbc359e1e8653a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 27 Feb 2019 15:42:18 +0000 Subject: [PATCH 10/26] tests/tcg: add gdb runner variant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With this you can launch a test in gdb with: cd $(BUILD)/tests make -f $(SRC)/tests/tcg/Makefile gdb-$(TEST_NAME) Signed-off-by: Alex Bennée --- tests/tcg/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index d26a36df61..8dfd1a76b9 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -128,6 +128,9 @@ run-%: % "$< on $(TARGET_NAME)") endif +gdb-%: % + gdb --args $(QEMU) $(QEMU_OPTS) $< + .PHONY: run run: $(RUN_TESTS) From b4f396151ba736078e12c01a079ba53ad02f0e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 21 Dec 2018 11:52:05 +0000 Subject: [PATCH 11/26] tests/tcg/mips: fix hello-mips compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The compilation flags for proper building are in the source tree. We also fix exit to 0 so the result is counted as a success. Signed-off-by: Alex Bennée --- tests/tcg/mips/Makefile.target | 11 ++++------- tests/tcg/mips/hello-mips.c | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target index 086625f533..1a994d5525 100644 --- a/tests/tcg/mips/Makefile.target +++ b/tests/tcg/mips/Makefile.target @@ -8,15 +8,12 @@ MIPS_SRC=$(SRC_PATH)/tests/tcg/mips # Set search path for all sources VPATH += $(MIPS_SRC) +# hello-mips is 32 bit only +ifeq ($(findstring 64,$(TARGET_NAME)),) MIPS_TESTS=hello-mips TESTS += $(MIPS_TESTS) -hello-mips: CFLAGS+=-ffreestanding +hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -mabi=32 hello-mips: LDFLAGS+=-nostdlib - -# For MIPS32 and 64 we have a bunch of extra tests in sub-directories -# however they are intended for system tests. - -run-hello-mips: hello-mips - $(call skip-test, $<, "BROKEN") +endif diff --git a/tests/tcg/mips/hello-mips.c b/tests/tcg/mips/hello-mips.c index c7052fdf2e..4e1cf501af 100644 --- a/tests/tcg/mips/hello-mips.c +++ b/tests/tcg/mips/hello-mips.c @@ -60,5 +60,5 @@ static inline int write(int fd, const char *buf, int len) void __start(void) { write (1, "Hello, World!\n", 14); - exit1 (42); + exit1(0); } From c72d9df18185c2d06f97409b6edabb68a77a49c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Sat, 23 Jun 2018 18:53:13 -0300 Subject: [PATCH 12/26] tests/docker: add debian-xtensa-cross image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xtensa cpu supported: - dc232b - dc233c - csp Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .../dockerfiles/debian-xtensa-cross.docker | 31 +++++++++++++++++++ tests/tcg/xtensa/Makefile.include | 11 +++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-xtensa-cross.docker create mode 100644 tests/tcg/xtensa/Makefile.include diff --git a/tests/docker/dockerfiles/debian-xtensa-cross.docker b/tests/docker/dockerfiles/debian-xtensa-cross.docker new file mode 100644 index 0000000000..afd2ab9163 --- /dev/null +++ b/tests/docker/dockerfiles/debian-xtensa-cross.docker @@ -0,0 +1,31 @@ +# +# Docker cross-compiler target +# +# This docker target builds on the debian stretch base image, +# using a prebuilt toolchains for Xtensa cores from: +# https://github.com/foss-xtensa/toolchain/releases +# +FROM debian:stretch-slim + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + bison \ + build-essential \ + ca-certificates \ + curl \ + flex \ + gettext \ + git \ + python-minimal + +ENV CPU_LIST csp dc232b dc233c +ENV TOOLCHAIN_RELEASE 2018.02 + +RUN for cpu in $CPU_LIST; do \ + curl -#SL http://github.com/foss-xtensa/toolchain/releases/download/$TOOLCHAIN_RELEASE/x86_64-$TOOLCHAIN_RELEASE-xtensa-$cpu-elf.tar.gz \ + | tar -xzC /opt; \ + done + +ENV PATH $PATH:/opt/$TOOLCHAIN_RELEASE/xtensa-dc232b-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-dc233c-elf/bin:/opt/$TOOLCHAIN_RELEASE/xtensa-csp-elf/bin diff --git a/tests/tcg/xtensa/Makefile.include b/tests/tcg/xtensa/Makefile.include new file mode 100644 index 0000000000..423c00a5d3 --- /dev/null +++ b/tests/tcg/xtensa/Makefile.include @@ -0,0 +1,11 @@ +# Makefile.include for xtensa targets +# +# The compilers can only be used for building system tests + +ifeq ($(CONFIG_SOFTMMU),y) +DOCKER_IMAGE=debian-xtensa-cross + +# default to the dc232b cpu +DOCKER_CROSS_COMPILER=/opt/2018.02/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-gcc +DOCKER_CROSS_LINKER=/opt/2018.02/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-ld +endif From be5cac175aaff7776fb4825c288b4fe8cbc1dc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 6 Dec 2018 17:12:44 +0000 Subject: [PATCH 13/26] tests/tcg/xtensa: enable system tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alex Bennée --- tests/tcg/xtensa/Makefile | 102 ----------------------- tests/tcg/xtensa/Makefile.softmmu-target | 42 ++++++++++ 2 files changed, 42 insertions(+), 102 deletions(-) delete mode 100644 tests/tcg/xtensa/Makefile create mode 100644 tests/tcg/xtensa/Makefile.softmmu-target diff --git a/tests/tcg/xtensa/Makefile b/tests/tcg/xtensa/Makefile deleted file mode 100644 index 2bd4491769..0000000000 --- a/tests/tcg/xtensa/Makefile +++ /dev/null @@ -1,102 +0,0 @@ --include ../../../config-host.mak - -CORE=dc232b -CROSS=xtensa-$(CORE)-elf- - -ifndef XT -SIM = ../../../xtensa-softmmu/qemu-system-xtensa -SIMFLAGS = -M sim -cpu $(CORE) -nographic -semihosting -icount 6 $(EXTFLAGS) -kernel -SIMDEBUG = -s -S -else -SIM = xt-run -SIMFLAGS = --xtensa-core=DC_B_232L --exit_with_target_code $(EXTFLAGS) -SIMDEBUG = --gdbserve=0 -endif - -HOST_CC = gcc -CC = $(CROSS)gcc -AS = $(CROSS)gcc -x assembler-with-cpp -LD = $(CROSS)ld - -ASFLAGS = -Wa,--no-absolute-literals -vectors_ASFLAGS = -mtext-section-literals - -XTENSA_SRC_PATH = $(SRC_PATH)/tests/tcg/xtensa -INCLUDE_DIRS = $(XTENSA_SRC_PATH) $(SRC_PATH)/target/xtensa/core-$(CORE) -XTENSA_INC = $(addprefix -I,$(INCLUDE_DIRS)) - -LDFLAGS = -Tlinker.ld - -CRT = crt.o vectors.o - -TESTCASES += test_b.tst -TESTCASES += test_bi.tst -TESTCASES += test_boolean.tst -TESTCASES += test_break.tst -TESTCASES += test_bz.tst -TESTCASES += test_cache.tst -TESTCASES += test_clamps.tst -TESTCASES += test_extui.tst -TESTCASES += test_fail.tst -TESTCASES += test_flix.tst -TESTCASES += test_fp0_arith.tst -TESTCASES += test_fp0_conv.tst -TESTCASES += test_fp1.tst -TESTCASES += test_fp_cpenable.tst -TESTCASES += test_interrupt.tst -TESTCASES += test_loop.tst -TESTCASES += test_lsc.tst -TESTCASES += test_mac16.tst -TESTCASES += test_max.tst -TESTCASES += test_min.tst -TESTCASES += test_mmu.tst -TESTCASES += test_mul16.tst -TESTCASES += test_mul32.tst -TESTCASES += test_nsa.tst -TESTCASES += test_phys_mem.tst -ifdef XT -TESTCASES += test_pipeline.tst -endif -TESTCASES += test_quo.tst -TESTCASES += test_rem.tst -TESTCASES += test_rst0.tst -TESTCASES += test_s32c1i.tst -TESTCASES += test_sar.tst -TESTCASES += test_sext.tst -TESTCASES += test_shift.tst -TESTCASES += test_sr.tst -TESTCASES += test_timer.tst -TESTCASES += test_windowed.tst - -all: build - -linker.ld: $(XTENSA_SRC_PATH)/linker.ld.S - $(HOST_CC) $(XTENSA_INC) -E -P $< -o $@ - -%.o: $(XTENSA_SRC_PATH)/%.c - $(CC) $(XTENSA_INC) $(CFLAGS) -c $< -o $@ - -%.o: $(XTENSA_SRC_PATH)/%.S - $(CC) $(XTENSA_INC) $($*_ASFLAGS) $(ASFLAGS) -c $< -o $@ - -%.tst: %.o linker.ld $(XTENSA_SRC_PATH)/macros.inc $(CRT) Makefile - $(LD) $(LDFLAGS) $(NOSTDFLAGS) $(CRT) $< -o $@ - -build: $(TESTCASES) - -check: $(addprefix run-, $(TESTCASES)) - -run-%.tst: %.tst - $(SIM) $(SIMFLAGS) ./$< - -run-test_fail.tst: test_fail.tst - ! $(SIM) $(SIMFLAGS) ./$< - -debug-%.tst: %.tst - $(SIM) $(SIMDEBUG) $(SIMFLAGS) ./$< - -host-debug-%.tst: %.tst - gdb --args $(SIM) $(SIMFLAGS) ./$< - -clean: - $(RM) -fr $(TESTCASES) $(CRT) linker.ld diff --git a/tests/tcg/xtensa/Makefile.softmmu-target b/tests/tcg/xtensa/Makefile.softmmu-target new file mode 100644 index 0000000000..86bb47db77 --- /dev/null +++ b/tests/tcg/xtensa/Makefile.softmmu-target @@ -0,0 +1,42 @@ +# +# Xtensa softmmu tests +# + +ifneq ($(TARGET_WORDS_BIGENDIAN),y) + +XTENSA_SRC = $(SRC_PATH)/tests/tcg/xtensa +XTENSA_ALL = $(filter-out $(XTENSA_SRC)/linker.ld.S,$(wildcard $(XTENSA_SRC)/*.S)) +XTENSA_TESTS = $(patsubst $(XTENSA_SRC)/%.S, %, $(XTENSA_ALL)) +# Filter out common blobs and broken tests +XTENSA_BROKEN_TESTS = crt vectors test_boolean test_pipeline test_fail +XTENSA_USABLE_TESTS = $(filter-out $(XTENSA_BROKEN_TESTS), $(XTENSA_TESTS)) + +# add to the list of tests +TESTS += $(XTENSA_USABLE_TESTS) +VPATH += $(XTENSA_SRC) + +CORE=dc232b +QEMU_OPTS+=-M sim -cpu $(CORE) -nographic -semihosting -icount 6 $(EXTFLAGS) -kernel + +INCLUDE_DIRS = $(SRC_PATH)/target/xtensa/core-$(CORE) +XTENSA_INC = $(addprefix -I,$(INCLUDE_DIRS)) + +vectors_ASFLAGS = -mtext-section-literals +ASFLAGS = -Wa,--no-absolute-literals +LDFLAGS = -Tlinker.ld -nostartfiles -nostdlib + +CRT = crt.o vectors.o + +linker.ld: linker.ld.S + $(CC) $(XTENSA_INC) -E -P $< -o $@ + +$(XTENSA_USABLE_TESTS): linker.ld macros.inc $(CRT) Makefile.softmmu-target + +# special rule for common blobs +%.o: %.S + $(CC) $(XTENSA_INC) $($*_ASFLAGS) $(ASFLAGS) -c $< -o $@ + +%: %.S + $(CC) $(XTENSA_INC) $(ASFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT) + +endif From 647aee9ba2f708f1533977189c3db4dcccc21d95 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 29 Nov 2018 18:51:13 +0000 Subject: [PATCH 14/26] tests/tcg/arm: add ARMv6-M UNDEFINED 32-bit instruction test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test that 32-bit instructions declared UNDEFINED in the ARMv6-M Reference Manual really do raise an exception. Also test that the 6 32-bit instructions defined in the ARMv6-M Reference Manual do not raise an exception. Based-on: <20181029194519.15628-1-stefanha@redhat.com> Signed-off-by: Stefan Hajnoczi Message-Id: <20181129185113.30353-1-stefanha@redhat.com> [AJB: integrated into system tests] Signed-off-by: Alex Bennée --- tests/tcg/arm/Makefile.softmmu-target | 29 +++++ tests/tcg/arm/test-armv6m-undef.S | 154 ++++++++++++++++++++++++++ tests/tcg/arm/test-armv6m-undef.ld | 21 ++++ 3 files changed, 204 insertions(+) create mode 100644 tests/tcg/arm/Makefile.softmmu-target create mode 100644 tests/tcg/arm/test-armv6m-undef.S create mode 100644 tests/tcg/arm/test-armv6m-undef.ld diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target new file mode 100644 index 0000000000..49d48d8a1c --- /dev/null +++ b/tests/tcg/arm/Makefile.softmmu-target @@ -0,0 +1,29 @@ +# -*- Mode: makefile -*- +# +# ARM SoftMMU tests - included from tests/tcg/Makefile +# + +ifeq ($(TARGET_ABI_DIR),arm) + +ARM_SRC=$(SRC_PATH)/tests/tcg/arm + +# Set search path for all sources +VPATH += $(ARM_SRC) + +ARM_TESTS=test-armv6m-undef + +TESTS += $(ARM_TESTS) + +CFLAGS+=-Wl,--build-id=none -x assembler-with-cpp +LDFLAGS+=-nostdlib -N -static + +%: %.S %.ld + $(CC) $(CFLAGS) $(ASFLAGS) $< -o $@ $(LDFLAGS) -T $(ARM_SRC)/$@.ld + +# Specific Test Rules + +test-armv6m-undef: EXTRA_CFLAGS+=-mcpu=cortex-m0 + +run-test-armv6m-undef: QEMU_OPTS+=-semihosting -M microbit -kernel + +endif diff --git a/tests/tcg/arm/test-armv6m-undef.S b/tests/tcg/arm/test-armv6m-undef.S new file mode 100644 index 0000000000..d18ca56b4a --- /dev/null +++ b/tests/tcg/arm/test-armv6m-undef.S @@ -0,0 +1,154 @@ +/* + * Test ARMv6-M UNDEFINED 32-bit instructions + * + * Copyright 2018 Red Hat Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 + * or later. See the COPYING file in the top-level directory. + */ + +/* + * Test that UNDEFINED 32-bit instructions fault as expected. This is an + * interesting test because ARMv6-M shares code with its more fully-featured + * siblings and it's necessary to verify that its limited instruction set is + * emulated correctly. + * + * The emulator must be invoked with -semihosting so that the test case can + * terminate with exit code 0 on success or 1 on failure. + * + * Failures can be debugged with -d in_asm,int,exec,cpu and the + * gdbstub (-S -s). + */ + +.syntax unified +.cpu cortex-m0 +.thumb + +/* + * Memory map + */ +#define SRAM_BASE 0x20000000 +#define SRAM_SIZE (16 * 1024) + +/* + * Semihosting interface on ARM T32 + * See "Semihosting for AArch32 and AArch64 Version 2.0 Documentation" by ARM + */ +#define semihosting_call bkpt 0xab +#define SYS_EXIT 0x18 + +vector_table: + .word SRAM_BASE + SRAM_SIZE /* 0. SP_main */ + .word exc_reset_thumb /* 1. Reset */ + .word 0 /* 2. NMI */ + .word exc_hard_fault_thumb /* 3. HardFault */ + .rept 7 + .word 0 /* 4-10. Reserved */ + .endr + .word 0 /* 11. SVCall */ + .word 0 /* 12. Reserved */ + .word 0 /* 13. Reserved */ + .word 0 /* 14. PendSV */ + .word 0 /* 15. SysTick */ + .rept 32 + .word 0 /* 16-47. External Interrupts */ + .endr + +exc_reset: +.equ exc_reset_thumb, exc_reset + 1 +.global exc_reset_thumb + /* The following 32-bit UNDEFINED instructions are tested by executing + * them. The HardFault exception handler should execute and return to + * the next test case. If no exception is raised the test fails. + */ + + /* Table A5-9 32-bit Thumb encoding */ + .short 0b1110100000000000 + .short 0b0000000000000000 + b not_reached + .short 0b1110100000000000 + .short 0b1000000000000000 + b not_reached + .short 0b1111100000000000 + .short 0b0000000000000000 + b not_reached + .short 0b1111100000000000 + .short 0b1000000000000000 + b not_reached + .short 0b1111000000000000 + .short 0b0000000000000000 + b not_reached + + /* Table A5-10 Branch and miscellaneous control instructions */ + .short 0b1111011111110000 + .short 0b1010000000000000 + b not_reached + + /* The following are valid 32-bit instructions that must not raise a + * HardFault. + */ + + /* B4.2.3 Move to Special Register (moves to IPSR are ignored) */ + msr ipsr, r0 + b 1f + b not_reached +1: + /* B4.2.2 Move from Special Register */ + mrs r0, ipsr + b 1f + b not_reached +1: + /* A6.7.13 Branch with Link (immediate) */ + bl 1f +1: + b 1f + b not_reached +1: + /* A6.7.21 Data Memory Barrier */ + dmb + b 1f + b not_reached +1: + /* A6.7.22 Data Synchronization Barrier */ + dsb + b 1f + b not_reached +1: + /* A6.7.24 Instruction Memory Barrier */ + isb + b 1f + b not_reached +1: + + /* Success! */ + movs r0, 1 + b exit + +not_reached: /* Failure :( */ + movs r0, 0 + b exit + +/* When a HardFault occurs, return to pc+6 (test cases are 3 halfwords long) */ +exc_hard_fault: +.equ exc_hard_fault_thumb, exc_hard_fault + 1 +.global exc_hard_fault_thumb + ldr r0, [sp, 0x18] + adds r0, 6 + str r0, [sp, 0x18] + bx lr + +/* + * exit: Terminate emulator + * @r0: 0 - failure, 1 - success + */ +exit: + movs r1, 0 + cmp r0, 1 + bne 1f + ldr r1, ADP_Stopped_ApplicationExit +1: + movs r0, SYS_EXIT + semihosting_call +.align 2 +ADP_Stopped_ApplicationExit: + .word 0x20026 diff --git a/tests/tcg/arm/test-armv6m-undef.ld b/tests/tcg/arm/test-armv6m-undef.ld new file mode 100644 index 0000000000..43dbbf17d5 --- /dev/null +++ b/tests/tcg/arm/test-armv6m-undef.ld @@ -0,0 +1,21 @@ +ENTRY(exc_reset_thumb) + +SECTIONS +{ + . = 0x0; + .text : { + *(.text) + } + .data : { + *(.data) + } + .rodata : { + *(.rodata) + } + .bss : { + *(.bss) + } + /DISCARD/ : { + *(.ARM.attributes) + } +} From 824ad15f1cbe6ef10a0423d0529345cfeb34129b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 6 Dec 2018 17:55:22 +0000 Subject: [PATCH 15/26] tests/docker: add fedora-cris-cross compilers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/fedora-cris-cross.docker | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/docker/dockerfiles/fedora-cris-cross.docker diff --git a/tests/docker/dockerfiles/fedora-cris-cross.docker b/tests/docker/dockerfiles/fedora-cris-cross.docker new file mode 100644 index 0000000000..b168ada615 --- /dev/null +++ b/tests/docker/dockerfiles/fedora-cris-cross.docker @@ -0,0 +1,8 @@ +# +# Cross compiler for cris system tests +# + +FROM fedora:latest +ENV PACKAGES gcc-cris-linux-gnu +RUN dnf install -y $PACKAGES +RUN rpm -q $PACKAGES | sort > /packages.txt From 6b970dd62cb67375f6267294d38798d9199e487b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 7 Dec 2018 15:16:43 +0000 Subject: [PATCH 16/26] tests/tcg/cris: cleanup sys.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a mini library which provides helper functions to the tests which are all currently written in assembly. A bunch of minor changes: - removed libc related headers (fedora-cris-cross is a system compiler) - re-organised the functions to avoid forward declarations - cleaned up brace usage - restored exit for _fail case - removed tabs and fixed indentation Signed-off-by: Alex Bennée --- tests/tcg/cris/sys.c | 102 ++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 49 deletions(-) diff --git a/tests/tcg/cris/sys.c b/tests/tcg/cris/sys.c index 21f08c0747..1644eecc33 100644 --- a/tests/tcg/cris/sys.c +++ b/tests/tcg/cris/sys.c @@ -1,59 +1,63 @@ -#include -#include -#include +/* + * Helper functions for CRIS system tests + * + * There is no libc and only a limited set of headers. + */ -static inline int mystrlen(char *s) { - int i = 0; - while (s[i]) - i++; - return i; +#include + +void exit(int status) +{ + register unsigned int callno asm ("r9") = 1; /* NR_exit */ + + asm volatile ("break 13\n" + : /* no outputs */ + : "r" (callno) + : "memory"); + while (1) { + /* do nothing */ + }; } -void pass(void) { - char s[] = "passed.\n"; - write (1, s, sizeof (s) - 1); - exit (0); +size_t write(int fd, const void *buf, size_t count) +{ + register unsigned int callno asm ("r9") = 4; /* NR_write */ + register unsigned int r10 asm ("r10") = fd; + register const void *r11 asm ("r11") = buf; + register size_t r12 asm ("r12") = count; + register unsigned int r asm ("r10"); + + asm volatile ("break 13\n" + : "=r" (r) + : "r" (callno), "0" (r10), "r" (r11), "r" (r12) + : "memory"); + + return r; } -void _fail(char *reason) { - char s[] = "\nfailed: "; - int len = mystrlen(reason); - write (1, s, sizeof (s) - 1); - write (1, reason, len); - write (1, "\n", 1); -// exit (1); +static inline int mystrlen(char *s) +{ + int i = 0; + while (s[i]) { + i++; + } + return i; } -void *memset (void *s, int c, size_t n) { - char *p = s; - int i; - for (i = 0; i < n; i++) - p[i] = c; - return p; + +void pass(void) +{ + char s[] = "passed.\n"; + write(1, s, sizeof(s) - 1); + exit(0); } -void exit (int status) { - register unsigned int callno asm ("r9") = 1; /* NR_exit */ - - asm volatile ("break 13\n" - : - : "r" (callno) - : "memory" ); - while(1) - ; -} - -ssize_t write (int fd, const void *buf, size_t count) { - register unsigned int callno asm ("r9") = 4; /* NR_write */ - register unsigned int r10 asm ("r10") = fd; - register const void *r11 asm ("r11") = buf; - register size_t r12 asm ("r12") = count; - register unsigned int r asm ("r10"); - - asm volatile ("break 13\n" - : "=r" (r) - : "r" (callno), "0" (r10), "r" (r11), "r" (r12) - : "memory"); - - return r; +void _fail(char *reason) +{ + char s[] = "\nfailed: "; + int len = mystrlen(reason); + write(1, s, sizeof(s) - 1); + write(1, reason, len); + write(1, "\n", 1); + exit(1); } From d4f6e58fcbab1fa2df123e3849dd95f30400a896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 7 Dec 2018 10:28:31 +0000 Subject: [PATCH 17/26] tests/tcg: split cris tests into bare and libc directories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bare tests are standalone assembly tests that don't require linking to any libc and hence can be built with kernel only compilers. The libc tests need a compiler capable of building properly linked userspace binaries. As we don't have such a cross compiler at the moment we won't be building those tests. Signed-off-by: Alex Bennée --- tests/tcg/cris/{ => bare}/check_addcv17.s | 0 tests/tcg/cris/{ => bare}/check_addi.s | 0 tests/tcg/cris/{ => bare}/check_addiv32.s | 0 tests/tcg/cris/{ => bare}/check_addm.s | 0 tests/tcg/cris/{ => bare}/check_addq.s | 0 tests/tcg/cris/{ => bare}/check_addr.s | 0 tests/tcg/cris/{ => bare}/check_addxc.s | 0 tests/tcg/cris/{ => bare}/check_addxm.s | 0 tests/tcg/cris/{ => bare}/check_addxr.s | 0 tests/tcg/cris/{ => bare}/check_andc.s | 0 tests/tcg/cris/{ => bare}/check_andm.s | 0 tests/tcg/cris/{ => bare}/check_andq.s | 0 tests/tcg/cris/{ => bare}/check_andr.s | 0 tests/tcg/cris/{ => bare}/check_asr.s | 0 tests/tcg/cris/{ => bare}/check_ba.s | 0 tests/tcg/cris/{ => bare}/check_bas.s | 0 tests/tcg/cris/{ => bare}/check_bcc.s | 0 tests/tcg/cris/{ => bare}/check_boundc.s | 0 tests/tcg/cris/{ => bare}/check_boundr.s | 0 tests/tcg/cris/{ => bare}/check_btst.s | 0 tests/tcg/cris/{ => bare}/check_clearfv32.s | 0 tests/tcg/cris/{ => bare}/check_clrjmp1.s | 0 tests/tcg/cris/{ => bare}/check_cmp-2.s | 0 tests/tcg/cris/{ => bare}/check_cmpc.s | 0 tests/tcg/cris/{ => bare}/check_cmpm.s | 0 tests/tcg/cris/{ => bare}/check_cmpq.s | 0 tests/tcg/cris/{ => bare}/check_cmpr.s | 0 tests/tcg/cris/{ => bare}/check_cmpxc.s | 0 tests/tcg/cris/{ => bare}/check_cmpxm.s | 0 tests/tcg/cris/{ => bare}/check_dstep.s | 0 tests/tcg/cris/{ => bare}/check_jsr.s | 0 tests/tcg/cris/{ => bare}/check_lapc.s | 0 tests/tcg/cris/{ => bare}/check_lsl.s | 0 tests/tcg/cris/{ => bare}/check_lsr.s | 0 tests/tcg/cris/{ => bare}/check_mcp.s | 0 tests/tcg/cris/{ => bare}/check_movdelsr1.s | 0 tests/tcg/cris/{ => bare}/check_movecr.s | 0 tests/tcg/cris/{ => bare}/check_movei.s | 0 tests/tcg/cris/{ => bare}/check_movemr.s | 0 tests/tcg/cris/{ => bare}/check_movemrv32.s | 0 tests/tcg/cris/{ => bare}/check_mover.s | 0 tests/tcg/cris/{ => bare}/check_moverm.s | 0 tests/tcg/cris/{ => bare}/check_movmp.s | 0 tests/tcg/cris/{ => bare}/check_movpmv32.s | 0 tests/tcg/cris/{ => bare}/check_movpr.s | 0 tests/tcg/cris/{ => bare}/check_movprv32.s | 0 tests/tcg/cris/{ => bare}/check_movscr.s | 0 tests/tcg/cris/{ => bare}/check_movsm.s | 0 tests/tcg/cris/{ => bare}/check_movsr.s | 0 tests/tcg/cris/{ => bare}/check_movucr.s | 0 tests/tcg/cris/{ => bare}/check_movum.s | 0 tests/tcg/cris/{ => bare}/check_movur.s | 0 tests/tcg/cris/{ => bare}/check_mulv32.s | 0 tests/tcg/cris/{ => bare}/check_mulx.s | 0 tests/tcg/cris/{ => bare}/check_neg.s | 0 tests/tcg/cris/{ => bare}/check_not.s | 0 tests/tcg/cris/{ => bare}/check_orc.s | 0 tests/tcg/cris/{ => bare}/check_orm.s | 0 tests/tcg/cris/{ => bare}/check_orq.s | 0 tests/tcg/cris/{ => bare}/check_orr.s | 0 tests/tcg/cris/{ => bare}/check_ret.s | 0 tests/tcg/cris/{ => bare}/check_scc.s | 0 tests/tcg/cris/{ => bare}/check_subc.s | 0 tests/tcg/cris/{ => bare}/check_subm.s | 0 tests/tcg/cris/{ => bare}/check_subq.s | 0 tests/tcg/cris/{ => bare}/check_subr.s | 0 tests/tcg/cris/{ => bare}/check_xarith.s | 0 tests/tcg/cris/{ => bare}/crt.s | 0 tests/tcg/cris/{ => bare}/sys.c | 0 tests/tcg/cris/{ => bare}/testutils.inc | 0 tests/tcg/cris/{ => libc}/check_abs.c | 0 tests/tcg/cris/{ => libc}/check_addc.c | 0 tests/tcg/cris/{ => libc}/check_addcm.c | 0 tests/tcg/cris/{ => libc}/check_addo.c | 0 tests/tcg/cris/{ => libc}/check_addoq.c | 0 tests/tcg/cris/{ => libc}/check_bound.c | 0 tests/tcg/cris/{ => libc}/check_ftag.c | 0 tests/tcg/cris/{ => libc}/check_gcctorture_pr28634-1.c | 0 tests/tcg/cris/{ => libc}/check_gcctorture_pr28634.c | 0 tests/tcg/cris/{ => libc}/check_glibc_kernelversion.c | 0 tests/tcg/cris/{ => libc}/check_hello.c | 0 tests/tcg/cris/{ => libc}/check_int64.c | 0 tests/tcg/cris/{ => libc}/check_lz.c | 0 tests/tcg/cris/{ => libc}/check_mapbrk.c | 0 tests/tcg/cris/{ => libc}/check_mmap1.c | 0 tests/tcg/cris/{ => libc}/check_mmap2.c | 0 tests/tcg/cris/{ => libc}/check_mmap3.c | 0 tests/tcg/cris/{ => libc}/check_moveq.c | 0 tests/tcg/cris/{ => libc}/check_openpf1.c | 0 tests/tcg/cris/{ => libc}/check_openpf2.c | 0 tests/tcg/cris/{ => libc}/check_openpf3.c | 0 tests/tcg/cris/{ => libc}/check_openpf5.c | 0 tests/tcg/cris/{ => libc}/check_settls1.c | 0 tests/tcg/cris/{ => libc}/check_sigalrm.c | 0 tests/tcg/cris/{ => libc}/check_stat1.c | 0 tests/tcg/cris/{ => libc}/check_stat2.c | 0 tests/tcg/cris/{ => libc}/check_stat3.c | 0 tests/tcg/cris/{ => libc}/check_stat4.c | 0 tests/tcg/cris/{ => libc}/check_swap.c | 0 tests/tcg/cris/{ => libc}/check_time2.c | 0 tests/tcg/cris/{ => libc}/crisutils.h | 0 tests/tcg/cris/{ => libc}/sys.h | 0 102 files changed, 0 insertions(+), 0 deletions(-) rename tests/tcg/cris/{ => bare}/check_addcv17.s (100%) rename tests/tcg/cris/{ => bare}/check_addi.s (100%) rename tests/tcg/cris/{ => bare}/check_addiv32.s (100%) rename tests/tcg/cris/{ => bare}/check_addm.s (100%) rename tests/tcg/cris/{ => bare}/check_addq.s (100%) rename tests/tcg/cris/{ => bare}/check_addr.s (100%) rename tests/tcg/cris/{ => bare}/check_addxc.s (100%) rename tests/tcg/cris/{ => bare}/check_addxm.s (100%) rename tests/tcg/cris/{ => bare}/check_addxr.s (100%) rename tests/tcg/cris/{ => bare}/check_andc.s (100%) rename tests/tcg/cris/{ => bare}/check_andm.s (100%) rename tests/tcg/cris/{ => bare}/check_andq.s (100%) rename tests/tcg/cris/{ => bare}/check_andr.s (100%) rename tests/tcg/cris/{ => bare}/check_asr.s (100%) rename tests/tcg/cris/{ => bare}/check_ba.s (100%) rename tests/tcg/cris/{ => bare}/check_bas.s (100%) rename tests/tcg/cris/{ => bare}/check_bcc.s (100%) rename tests/tcg/cris/{ => bare}/check_boundc.s (100%) rename tests/tcg/cris/{ => bare}/check_boundr.s (100%) rename tests/tcg/cris/{ => bare}/check_btst.s (100%) rename tests/tcg/cris/{ => bare}/check_clearfv32.s (100%) rename tests/tcg/cris/{ => bare}/check_clrjmp1.s (100%) rename tests/tcg/cris/{ => bare}/check_cmp-2.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpc.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpm.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpq.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpr.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpxc.s (100%) rename tests/tcg/cris/{ => bare}/check_cmpxm.s (100%) rename tests/tcg/cris/{ => bare}/check_dstep.s (100%) rename tests/tcg/cris/{ => bare}/check_jsr.s (100%) rename tests/tcg/cris/{ => bare}/check_lapc.s (100%) rename tests/tcg/cris/{ => bare}/check_lsl.s (100%) rename tests/tcg/cris/{ => bare}/check_lsr.s (100%) rename tests/tcg/cris/{ => bare}/check_mcp.s (100%) rename tests/tcg/cris/{ => bare}/check_movdelsr1.s (100%) rename tests/tcg/cris/{ => bare}/check_movecr.s (100%) rename tests/tcg/cris/{ => bare}/check_movei.s (100%) rename tests/tcg/cris/{ => bare}/check_movemr.s (100%) rename tests/tcg/cris/{ => bare}/check_movemrv32.s (100%) rename tests/tcg/cris/{ => bare}/check_mover.s (100%) rename tests/tcg/cris/{ => bare}/check_moverm.s (100%) rename tests/tcg/cris/{ => bare}/check_movmp.s (100%) rename tests/tcg/cris/{ => bare}/check_movpmv32.s (100%) rename tests/tcg/cris/{ => bare}/check_movpr.s (100%) rename tests/tcg/cris/{ => bare}/check_movprv32.s (100%) rename tests/tcg/cris/{ => bare}/check_movscr.s (100%) rename tests/tcg/cris/{ => bare}/check_movsm.s (100%) rename tests/tcg/cris/{ => bare}/check_movsr.s (100%) rename tests/tcg/cris/{ => bare}/check_movucr.s (100%) rename tests/tcg/cris/{ => bare}/check_movum.s (100%) rename tests/tcg/cris/{ => bare}/check_movur.s (100%) rename tests/tcg/cris/{ => bare}/check_mulv32.s (100%) rename tests/tcg/cris/{ => bare}/check_mulx.s (100%) rename tests/tcg/cris/{ => bare}/check_neg.s (100%) rename tests/tcg/cris/{ => bare}/check_not.s (100%) rename tests/tcg/cris/{ => bare}/check_orc.s (100%) rename tests/tcg/cris/{ => bare}/check_orm.s (100%) rename tests/tcg/cris/{ => bare}/check_orq.s (100%) rename tests/tcg/cris/{ => bare}/check_orr.s (100%) rename tests/tcg/cris/{ => bare}/check_ret.s (100%) rename tests/tcg/cris/{ => bare}/check_scc.s (100%) rename tests/tcg/cris/{ => bare}/check_subc.s (100%) rename tests/tcg/cris/{ => bare}/check_subm.s (100%) rename tests/tcg/cris/{ => bare}/check_subq.s (100%) rename tests/tcg/cris/{ => bare}/check_subr.s (100%) rename tests/tcg/cris/{ => bare}/check_xarith.s (100%) rename tests/tcg/cris/{ => bare}/crt.s (100%) rename tests/tcg/cris/{ => bare}/sys.c (100%) rename tests/tcg/cris/{ => bare}/testutils.inc (100%) rename tests/tcg/cris/{ => libc}/check_abs.c (100%) rename tests/tcg/cris/{ => libc}/check_addc.c (100%) rename tests/tcg/cris/{ => libc}/check_addcm.c (100%) rename tests/tcg/cris/{ => libc}/check_addo.c (100%) rename tests/tcg/cris/{ => libc}/check_addoq.c (100%) rename tests/tcg/cris/{ => libc}/check_bound.c (100%) rename tests/tcg/cris/{ => libc}/check_ftag.c (100%) rename tests/tcg/cris/{ => libc}/check_gcctorture_pr28634-1.c (100%) rename tests/tcg/cris/{ => libc}/check_gcctorture_pr28634.c (100%) rename tests/tcg/cris/{ => libc}/check_glibc_kernelversion.c (100%) rename tests/tcg/cris/{ => libc}/check_hello.c (100%) rename tests/tcg/cris/{ => libc}/check_int64.c (100%) rename tests/tcg/cris/{ => libc}/check_lz.c (100%) rename tests/tcg/cris/{ => libc}/check_mapbrk.c (100%) rename tests/tcg/cris/{ => libc}/check_mmap1.c (100%) rename tests/tcg/cris/{ => libc}/check_mmap2.c (100%) rename tests/tcg/cris/{ => libc}/check_mmap3.c (100%) rename tests/tcg/cris/{ => libc}/check_moveq.c (100%) rename tests/tcg/cris/{ => libc}/check_openpf1.c (100%) rename tests/tcg/cris/{ => libc}/check_openpf2.c (100%) rename tests/tcg/cris/{ => libc}/check_openpf3.c (100%) rename tests/tcg/cris/{ => libc}/check_openpf5.c (100%) rename tests/tcg/cris/{ => libc}/check_settls1.c (100%) rename tests/tcg/cris/{ => libc}/check_sigalrm.c (100%) rename tests/tcg/cris/{ => libc}/check_stat1.c (100%) rename tests/tcg/cris/{ => libc}/check_stat2.c (100%) rename tests/tcg/cris/{ => libc}/check_stat3.c (100%) rename tests/tcg/cris/{ => libc}/check_stat4.c (100%) rename tests/tcg/cris/{ => libc}/check_swap.c (100%) rename tests/tcg/cris/{ => libc}/check_time2.c (100%) rename tests/tcg/cris/{ => libc}/crisutils.h (100%) rename tests/tcg/cris/{ => libc}/sys.h (100%) diff --git a/tests/tcg/cris/check_addcv17.s b/tests/tcg/cris/bare/check_addcv17.s similarity index 100% rename from tests/tcg/cris/check_addcv17.s rename to tests/tcg/cris/bare/check_addcv17.s diff --git a/tests/tcg/cris/check_addi.s b/tests/tcg/cris/bare/check_addi.s similarity index 100% rename from tests/tcg/cris/check_addi.s rename to tests/tcg/cris/bare/check_addi.s diff --git a/tests/tcg/cris/check_addiv32.s b/tests/tcg/cris/bare/check_addiv32.s similarity index 100% rename from tests/tcg/cris/check_addiv32.s rename to tests/tcg/cris/bare/check_addiv32.s diff --git a/tests/tcg/cris/check_addm.s b/tests/tcg/cris/bare/check_addm.s similarity index 100% rename from tests/tcg/cris/check_addm.s rename to tests/tcg/cris/bare/check_addm.s diff --git a/tests/tcg/cris/check_addq.s b/tests/tcg/cris/bare/check_addq.s similarity index 100% rename from tests/tcg/cris/check_addq.s rename to tests/tcg/cris/bare/check_addq.s diff --git a/tests/tcg/cris/check_addr.s b/tests/tcg/cris/bare/check_addr.s similarity index 100% rename from tests/tcg/cris/check_addr.s rename to tests/tcg/cris/bare/check_addr.s diff --git a/tests/tcg/cris/check_addxc.s b/tests/tcg/cris/bare/check_addxc.s similarity index 100% rename from tests/tcg/cris/check_addxc.s rename to tests/tcg/cris/bare/check_addxc.s diff --git a/tests/tcg/cris/check_addxm.s b/tests/tcg/cris/bare/check_addxm.s similarity index 100% rename from tests/tcg/cris/check_addxm.s rename to tests/tcg/cris/bare/check_addxm.s diff --git a/tests/tcg/cris/check_addxr.s b/tests/tcg/cris/bare/check_addxr.s similarity index 100% rename from tests/tcg/cris/check_addxr.s rename to tests/tcg/cris/bare/check_addxr.s diff --git a/tests/tcg/cris/check_andc.s b/tests/tcg/cris/bare/check_andc.s similarity index 100% rename from tests/tcg/cris/check_andc.s rename to tests/tcg/cris/bare/check_andc.s diff --git a/tests/tcg/cris/check_andm.s b/tests/tcg/cris/bare/check_andm.s similarity index 100% rename from tests/tcg/cris/check_andm.s rename to tests/tcg/cris/bare/check_andm.s diff --git a/tests/tcg/cris/check_andq.s b/tests/tcg/cris/bare/check_andq.s similarity index 100% rename from tests/tcg/cris/check_andq.s rename to tests/tcg/cris/bare/check_andq.s diff --git a/tests/tcg/cris/check_andr.s b/tests/tcg/cris/bare/check_andr.s similarity index 100% rename from tests/tcg/cris/check_andr.s rename to tests/tcg/cris/bare/check_andr.s diff --git a/tests/tcg/cris/check_asr.s b/tests/tcg/cris/bare/check_asr.s similarity index 100% rename from tests/tcg/cris/check_asr.s rename to tests/tcg/cris/bare/check_asr.s diff --git a/tests/tcg/cris/check_ba.s b/tests/tcg/cris/bare/check_ba.s similarity index 100% rename from tests/tcg/cris/check_ba.s rename to tests/tcg/cris/bare/check_ba.s diff --git a/tests/tcg/cris/check_bas.s b/tests/tcg/cris/bare/check_bas.s similarity index 100% rename from tests/tcg/cris/check_bas.s rename to tests/tcg/cris/bare/check_bas.s diff --git a/tests/tcg/cris/check_bcc.s b/tests/tcg/cris/bare/check_bcc.s similarity index 100% rename from tests/tcg/cris/check_bcc.s rename to tests/tcg/cris/bare/check_bcc.s diff --git a/tests/tcg/cris/check_boundc.s b/tests/tcg/cris/bare/check_boundc.s similarity index 100% rename from tests/tcg/cris/check_boundc.s rename to tests/tcg/cris/bare/check_boundc.s diff --git a/tests/tcg/cris/check_boundr.s b/tests/tcg/cris/bare/check_boundr.s similarity index 100% rename from tests/tcg/cris/check_boundr.s rename to tests/tcg/cris/bare/check_boundr.s diff --git a/tests/tcg/cris/check_btst.s b/tests/tcg/cris/bare/check_btst.s similarity index 100% rename from tests/tcg/cris/check_btst.s rename to tests/tcg/cris/bare/check_btst.s diff --git a/tests/tcg/cris/check_clearfv32.s b/tests/tcg/cris/bare/check_clearfv32.s similarity index 100% rename from tests/tcg/cris/check_clearfv32.s rename to tests/tcg/cris/bare/check_clearfv32.s diff --git a/tests/tcg/cris/check_clrjmp1.s b/tests/tcg/cris/bare/check_clrjmp1.s similarity index 100% rename from tests/tcg/cris/check_clrjmp1.s rename to tests/tcg/cris/bare/check_clrjmp1.s diff --git a/tests/tcg/cris/check_cmp-2.s b/tests/tcg/cris/bare/check_cmp-2.s similarity index 100% rename from tests/tcg/cris/check_cmp-2.s rename to tests/tcg/cris/bare/check_cmp-2.s diff --git a/tests/tcg/cris/check_cmpc.s b/tests/tcg/cris/bare/check_cmpc.s similarity index 100% rename from tests/tcg/cris/check_cmpc.s rename to tests/tcg/cris/bare/check_cmpc.s diff --git a/tests/tcg/cris/check_cmpm.s b/tests/tcg/cris/bare/check_cmpm.s similarity index 100% rename from tests/tcg/cris/check_cmpm.s rename to tests/tcg/cris/bare/check_cmpm.s diff --git a/tests/tcg/cris/check_cmpq.s b/tests/tcg/cris/bare/check_cmpq.s similarity index 100% rename from tests/tcg/cris/check_cmpq.s rename to tests/tcg/cris/bare/check_cmpq.s diff --git a/tests/tcg/cris/check_cmpr.s b/tests/tcg/cris/bare/check_cmpr.s similarity index 100% rename from tests/tcg/cris/check_cmpr.s rename to tests/tcg/cris/bare/check_cmpr.s diff --git a/tests/tcg/cris/check_cmpxc.s b/tests/tcg/cris/bare/check_cmpxc.s similarity index 100% rename from tests/tcg/cris/check_cmpxc.s rename to tests/tcg/cris/bare/check_cmpxc.s diff --git a/tests/tcg/cris/check_cmpxm.s b/tests/tcg/cris/bare/check_cmpxm.s similarity index 100% rename from tests/tcg/cris/check_cmpxm.s rename to tests/tcg/cris/bare/check_cmpxm.s diff --git a/tests/tcg/cris/check_dstep.s b/tests/tcg/cris/bare/check_dstep.s similarity index 100% rename from tests/tcg/cris/check_dstep.s rename to tests/tcg/cris/bare/check_dstep.s diff --git a/tests/tcg/cris/check_jsr.s b/tests/tcg/cris/bare/check_jsr.s similarity index 100% rename from tests/tcg/cris/check_jsr.s rename to tests/tcg/cris/bare/check_jsr.s diff --git a/tests/tcg/cris/check_lapc.s b/tests/tcg/cris/bare/check_lapc.s similarity index 100% rename from tests/tcg/cris/check_lapc.s rename to tests/tcg/cris/bare/check_lapc.s diff --git a/tests/tcg/cris/check_lsl.s b/tests/tcg/cris/bare/check_lsl.s similarity index 100% rename from tests/tcg/cris/check_lsl.s rename to tests/tcg/cris/bare/check_lsl.s diff --git a/tests/tcg/cris/check_lsr.s b/tests/tcg/cris/bare/check_lsr.s similarity index 100% rename from tests/tcg/cris/check_lsr.s rename to tests/tcg/cris/bare/check_lsr.s diff --git a/tests/tcg/cris/check_mcp.s b/tests/tcg/cris/bare/check_mcp.s similarity index 100% rename from tests/tcg/cris/check_mcp.s rename to tests/tcg/cris/bare/check_mcp.s diff --git a/tests/tcg/cris/check_movdelsr1.s b/tests/tcg/cris/bare/check_movdelsr1.s similarity index 100% rename from tests/tcg/cris/check_movdelsr1.s rename to tests/tcg/cris/bare/check_movdelsr1.s diff --git a/tests/tcg/cris/check_movecr.s b/tests/tcg/cris/bare/check_movecr.s similarity index 100% rename from tests/tcg/cris/check_movecr.s rename to tests/tcg/cris/bare/check_movecr.s diff --git a/tests/tcg/cris/check_movei.s b/tests/tcg/cris/bare/check_movei.s similarity index 100% rename from tests/tcg/cris/check_movei.s rename to tests/tcg/cris/bare/check_movei.s diff --git a/tests/tcg/cris/check_movemr.s b/tests/tcg/cris/bare/check_movemr.s similarity index 100% rename from tests/tcg/cris/check_movemr.s rename to tests/tcg/cris/bare/check_movemr.s diff --git a/tests/tcg/cris/check_movemrv32.s b/tests/tcg/cris/bare/check_movemrv32.s similarity index 100% rename from tests/tcg/cris/check_movemrv32.s rename to tests/tcg/cris/bare/check_movemrv32.s diff --git a/tests/tcg/cris/check_mover.s b/tests/tcg/cris/bare/check_mover.s similarity index 100% rename from tests/tcg/cris/check_mover.s rename to tests/tcg/cris/bare/check_mover.s diff --git a/tests/tcg/cris/check_moverm.s b/tests/tcg/cris/bare/check_moverm.s similarity index 100% rename from tests/tcg/cris/check_moverm.s rename to tests/tcg/cris/bare/check_moverm.s diff --git a/tests/tcg/cris/check_movmp.s b/tests/tcg/cris/bare/check_movmp.s similarity index 100% rename from tests/tcg/cris/check_movmp.s rename to tests/tcg/cris/bare/check_movmp.s diff --git a/tests/tcg/cris/check_movpmv32.s b/tests/tcg/cris/bare/check_movpmv32.s similarity index 100% rename from tests/tcg/cris/check_movpmv32.s rename to tests/tcg/cris/bare/check_movpmv32.s diff --git a/tests/tcg/cris/check_movpr.s b/tests/tcg/cris/bare/check_movpr.s similarity index 100% rename from tests/tcg/cris/check_movpr.s rename to tests/tcg/cris/bare/check_movpr.s diff --git a/tests/tcg/cris/check_movprv32.s b/tests/tcg/cris/bare/check_movprv32.s similarity index 100% rename from tests/tcg/cris/check_movprv32.s rename to tests/tcg/cris/bare/check_movprv32.s diff --git a/tests/tcg/cris/check_movscr.s b/tests/tcg/cris/bare/check_movscr.s similarity index 100% rename from tests/tcg/cris/check_movscr.s rename to tests/tcg/cris/bare/check_movscr.s diff --git a/tests/tcg/cris/check_movsm.s b/tests/tcg/cris/bare/check_movsm.s similarity index 100% rename from tests/tcg/cris/check_movsm.s rename to tests/tcg/cris/bare/check_movsm.s diff --git a/tests/tcg/cris/check_movsr.s b/tests/tcg/cris/bare/check_movsr.s similarity index 100% rename from tests/tcg/cris/check_movsr.s rename to tests/tcg/cris/bare/check_movsr.s diff --git a/tests/tcg/cris/check_movucr.s b/tests/tcg/cris/bare/check_movucr.s similarity index 100% rename from tests/tcg/cris/check_movucr.s rename to tests/tcg/cris/bare/check_movucr.s diff --git a/tests/tcg/cris/check_movum.s b/tests/tcg/cris/bare/check_movum.s similarity index 100% rename from tests/tcg/cris/check_movum.s rename to tests/tcg/cris/bare/check_movum.s diff --git a/tests/tcg/cris/check_movur.s b/tests/tcg/cris/bare/check_movur.s similarity index 100% rename from tests/tcg/cris/check_movur.s rename to tests/tcg/cris/bare/check_movur.s diff --git a/tests/tcg/cris/check_mulv32.s b/tests/tcg/cris/bare/check_mulv32.s similarity index 100% rename from tests/tcg/cris/check_mulv32.s rename to tests/tcg/cris/bare/check_mulv32.s diff --git a/tests/tcg/cris/check_mulx.s b/tests/tcg/cris/bare/check_mulx.s similarity index 100% rename from tests/tcg/cris/check_mulx.s rename to tests/tcg/cris/bare/check_mulx.s diff --git a/tests/tcg/cris/check_neg.s b/tests/tcg/cris/bare/check_neg.s similarity index 100% rename from tests/tcg/cris/check_neg.s rename to tests/tcg/cris/bare/check_neg.s diff --git a/tests/tcg/cris/check_not.s b/tests/tcg/cris/bare/check_not.s similarity index 100% rename from tests/tcg/cris/check_not.s rename to tests/tcg/cris/bare/check_not.s diff --git a/tests/tcg/cris/check_orc.s b/tests/tcg/cris/bare/check_orc.s similarity index 100% rename from tests/tcg/cris/check_orc.s rename to tests/tcg/cris/bare/check_orc.s diff --git a/tests/tcg/cris/check_orm.s b/tests/tcg/cris/bare/check_orm.s similarity index 100% rename from tests/tcg/cris/check_orm.s rename to tests/tcg/cris/bare/check_orm.s diff --git a/tests/tcg/cris/check_orq.s b/tests/tcg/cris/bare/check_orq.s similarity index 100% rename from tests/tcg/cris/check_orq.s rename to tests/tcg/cris/bare/check_orq.s diff --git a/tests/tcg/cris/check_orr.s b/tests/tcg/cris/bare/check_orr.s similarity index 100% rename from tests/tcg/cris/check_orr.s rename to tests/tcg/cris/bare/check_orr.s diff --git a/tests/tcg/cris/check_ret.s b/tests/tcg/cris/bare/check_ret.s similarity index 100% rename from tests/tcg/cris/check_ret.s rename to tests/tcg/cris/bare/check_ret.s diff --git a/tests/tcg/cris/check_scc.s b/tests/tcg/cris/bare/check_scc.s similarity index 100% rename from tests/tcg/cris/check_scc.s rename to tests/tcg/cris/bare/check_scc.s diff --git a/tests/tcg/cris/check_subc.s b/tests/tcg/cris/bare/check_subc.s similarity index 100% rename from tests/tcg/cris/check_subc.s rename to tests/tcg/cris/bare/check_subc.s diff --git a/tests/tcg/cris/check_subm.s b/tests/tcg/cris/bare/check_subm.s similarity index 100% rename from tests/tcg/cris/check_subm.s rename to tests/tcg/cris/bare/check_subm.s diff --git a/tests/tcg/cris/check_subq.s b/tests/tcg/cris/bare/check_subq.s similarity index 100% rename from tests/tcg/cris/check_subq.s rename to tests/tcg/cris/bare/check_subq.s diff --git a/tests/tcg/cris/check_subr.s b/tests/tcg/cris/bare/check_subr.s similarity index 100% rename from tests/tcg/cris/check_subr.s rename to tests/tcg/cris/bare/check_subr.s diff --git a/tests/tcg/cris/check_xarith.s b/tests/tcg/cris/bare/check_xarith.s similarity index 100% rename from tests/tcg/cris/check_xarith.s rename to tests/tcg/cris/bare/check_xarith.s diff --git a/tests/tcg/cris/crt.s b/tests/tcg/cris/bare/crt.s similarity index 100% rename from tests/tcg/cris/crt.s rename to tests/tcg/cris/bare/crt.s diff --git a/tests/tcg/cris/sys.c b/tests/tcg/cris/bare/sys.c similarity index 100% rename from tests/tcg/cris/sys.c rename to tests/tcg/cris/bare/sys.c diff --git a/tests/tcg/cris/testutils.inc b/tests/tcg/cris/bare/testutils.inc similarity index 100% rename from tests/tcg/cris/testutils.inc rename to tests/tcg/cris/bare/testutils.inc diff --git a/tests/tcg/cris/check_abs.c b/tests/tcg/cris/libc/check_abs.c similarity index 100% rename from tests/tcg/cris/check_abs.c rename to tests/tcg/cris/libc/check_abs.c diff --git a/tests/tcg/cris/check_addc.c b/tests/tcg/cris/libc/check_addc.c similarity index 100% rename from tests/tcg/cris/check_addc.c rename to tests/tcg/cris/libc/check_addc.c diff --git a/tests/tcg/cris/check_addcm.c b/tests/tcg/cris/libc/check_addcm.c similarity index 100% rename from tests/tcg/cris/check_addcm.c rename to tests/tcg/cris/libc/check_addcm.c diff --git a/tests/tcg/cris/check_addo.c b/tests/tcg/cris/libc/check_addo.c similarity index 100% rename from tests/tcg/cris/check_addo.c rename to tests/tcg/cris/libc/check_addo.c diff --git a/tests/tcg/cris/check_addoq.c b/tests/tcg/cris/libc/check_addoq.c similarity index 100% rename from tests/tcg/cris/check_addoq.c rename to tests/tcg/cris/libc/check_addoq.c diff --git a/tests/tcg/cris/check_bound.c b/tests/tcg/cris/libc/check_bound.c similarity index 100% rename from tests/tcg/cris/check_bound.c rename to tests/tcg/cris/libc/check_bound.c diff --git a/tests/tcg/cris/check_ftag.c b/tests/tcg/cris/libc/check_ftag.c similarity index 100% rename from tests/tcg/cris/check_ftag.c rename to tests/tcg/cris/libc/check_ftag.c diff --git a/tests/tcg/cris/check_gcctorture_pr28634-1.c b/tests/tcg/cris/libc/check_gcctorture_pr28634-1.c similarity index 100% rename from tests/tcg/cris/check_gcctorture_pr28634-1.c rename to tests/tcg/cris/libc/check_gcctorture_pr28634-1.c diff --git a/tests/tcg/cris/check_gcctorture_pr28634.c b/tests/tcg/cris/libc/check_gcctorture_pr28634.c similarity index 100% rename from tests/tcg/cris/check_gcctorture_pr28634.c rename to tests/tcg/cris/libc/check_gcctorture_pr28634.c diff --git a/tests/tcg/cris/check_glibc_kernelversion.c b/tests/tcg/cris/libc/check_glibc_kernelversion.c similarity index 100% rename from tests/tcg/cris/check_glibc_kernelversion.c rename to tests/tcg/cris/libc/check_glibc_kernelversion.c diff --git a/tests/tcg/cris/check_hello.c b/tests/tcg/cris/libc/check_hello.c similarity index 100% rename from tests/tcg/cris/check_hello.c rename to tests/tcg/cris/libc/check_hello.c diff --git a/tests/tcg/cris/check_int64.c b/tests/tcg/cris/libc/check_int64.c similarity index 100% rename from tests/tcg/cris/check_int64.c rename to tests/tcg/cris/libc/check_int64.c diff --git a/tests/tcg/cris/check_lz.c b/tests/tcg/cris/libc/check_lz.c similarity index 100% rename from tests/tcg/cris/check_lz.c rename to tests/tcg/cris/libc/check_lz.c diff --git a/tests/tcg/cris/check_mapbrk.c b/tests/tcg/cris/libc/check_mapbrk.c similarity index 100% rename from tests/tcg/cris/check_mapbrk.c rename to tests/tcg/cris/libc/check_mapbrk.c diff --git a/tests/tcg/cris/check_mmap1.c b/tests/tcg/cris/libc/check_mmap1.c similarity index 100% rename from tests/tcg/cris/check_mmap1.c rename to tests/tcg/cris/libc/check_mmap1.c diff --git a/tests/tcg/cris/check_mmap2.c b/tests/tcg/cris/libc/check_mmap2.c similarity index 100% rename from tests/tcg/cris/check_mmap2.c rename to tests/tcg/cris/libc/check_mmap2.c diff --git a/tests/tcg/cris/check_mmap3.c b/tests/tcg/cris/libc/check_mmap3.c similarity index 100% rename from tests/tcg/cris/check_mmap3.c rename to tests/tcg/cris/libc/check_mmap3.c diff --git a/tests/tcg/cris/check_moveq.c b/tests/tcg/cris/libc/check_moveq.c similarity index 100% rename from tests/tcg/cris/check_moveq.c rename to tests/tcg/cris/libc/check_moveq.c diff --git a/tests/tcg/cris/check_openpf1.c b/tests/tcg/cris/libc/check_openpf1.c similarity index 100% rename from tests/tcg/cris/check_openpf1.c rename to tests/tcg/cris/libc/check_openpf1.c diff --git a/tests/tcg/cris/check_openpf2.c b/tests/tcg/cris/libc/check_openpf2.c similarity index 100% rename from tests/tcg/cris/check_openpf2.c rename to tests/tcg/cris/libc/check_openpf2.c diff --git a/tests/tcg/cris/check_openpf3.c b/tests/tcg/cris/libc/check_openpf3.c similarity index 100% rename from tests/tcg/cris/check_openpf3.c rename to tests/tcg/cris/libc/check_openpf3.c diff --git a/tests/tcg/cris/check_openpf5.c b/tests/tcg/cris/libc/check_openpf5.c similarity index 100% rename from tests/tcg/cris/check_openpf5.c rename to tests/tcg/cris/libc/check_openpf5.c diff --git a/tests/tcg/cris/check_settls1.c b/tests/tcg/cris/libc/check_settls1.c similarity index 100% rename from tests/tcg/cris/check_settls1.c rename to tests/tcg/cris/libc/check_settls1.c diff --git a/tests/tcg/cris/check_sigalrm.c b/tests/tcg/cris/libc/check_sigalrm.c similarity index 100% rename from tests/tcg/cris/check_sigalrm.c rename to tests/tcg/cris/libc/check_sigalrm.c diff --git a/tests/tcg/cris/check_stat1.c b/tests/tcg/cris/libc/check_stat1.c similarity index 100% rename from tests/tcg/cris/check_stat1.c rename to tests/tcg/cris/libc/check_stat1.c diff --git a/tests/tcg/cris/check_stat2.c b/tests/tcg/cris/libc/check_stat2.c similarity index 100% rename from tests/tcg/cris/check_stat2.c rename to tests/tcg/cris/libc/check_stat2.c diff --git a/tests/tcg/cris/check_stat3.c b/tests/tcg/cris/libc/check_stat3.c similarity index 100% rename from tests/tcg/cris/check_stat3.c rename to tests/tcg/cris/libc/check_stat3.c diff --git a/tests/tcg/cris/check_stat4.c b/tests/tcg/cris/libc/check_stat4.c similarity index 100% rename from tests/tcg/cris/check_stat4.c rename to tests/tcg/cris/libc/check_stat4.c diff --git a/tests/tcg/cris/check_swap.c b/tests/tcg/cris/libc/check_swap.c similarity index 100% rename from tests/tcg/cris/check_swap.c rename to tests/tcg/cris/libc/check_swap.c diff --git a/tests/tcg/cris/check_time2.c b/tests/tcg/cris/libc/check_time2.c similarity index 100% rename from tests/tcg/cris/check_time2.c rename to tests/tcg/cris/libc/check_time2.c diff --git a/tests/tcg/cris/crisutils.h b/tests/tcg/cris/libc/crisutils.h similarity index 100% rename from tests/tcg/cris/crisutils.h rename to tests/tcg/cris/libc/crisutils.h diff --git a/tests/tcg/cris/sys.h b/tests/tcg/cris/libc/sys.h similarity index 100% rename from tests/tcg/cris/sys.h rename to tests/tcg/cris/libc/sys.h From 0056cb579031ec6a8b07c4eb92fa4c1eb52af824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 7 Dec 2018 18:05:52 +0000 Subject: [PATCH 18/26] tests/tcg/cris: comment out the ccs test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Evidently upstream gcc doesn't like this opcode. Signed-off-by: Alex Bennée --- tests/tcg/cris/bare/check_btst.s | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/tcg/cris/bare/check_btst.s b/tests/tcg/cris/bare/check_btst.s index e39fc8f4d6..485deb2006 100644 --- a/tests/tcg/cris/bare/check_btst.s +++ b/tests/tcg/cris/bare/check_btst.s @@ -85,12 +85,12 @@ checkr3 1111 ; check that X gets cleared and that only the NZ flags are touched. - move.d 0xff, $r0 - move $r0, $ccs - btst r3,r3 - move $ccs, $r0 - and.d 0xff, $r0 - cmp.d 0xe3, $r0 - test_cc 0 1 0 0 + ;; move.d 0xff, $r0 + ;; move $r0, $ccs + ;; btst r3,r3 + ;; move $ccs, $r0 + ;; and.d 0xff, $r0 + ;; cmp.d 0xe3, $r0 + ;; test_cc 0 1 0 0 quit From f17365f518ad1d25c370b613b1ab220753f38b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 7 Dec 2018 18:06:34 +0000 Subject: [PATCH 19/26] tests/tcg/cris: align mul operations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To avoid: Error: dangerous MULS/MULU location; give it higher alignment Signed-off-by: Alex Bennée --- tests/tcg/cris/bare/check_mulx.s | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/tcg/cris/bare/check_mulx.s b/tests/tcg/cris/bare/check_mulx.s index d43241a6f5..a7a1f82a82 100644 --- a/tests/tcg/cris/bare/check_mulx.s +++ b/tests/tcg/cris/bare/check_mulx.s @@ -3,6 +3,8 @@ .include "testutils.inc" start + + .align 4 moveq -1,r3 moveq 2,r4 muls.d r4,r3 @@ -11,6 +13,7 @@ move mof,r3 checkr3 ffffffff + .align 4 moveq -1,r3 moveq 2,r4 mulu.d r4,r3 @@ -19,6 +22,7 @@ move mof,r3 checkr3 1 + .align 4 moveq 2,r3 moveq -1,r4 muls.d r4,r3 @@ -27,6 +31,7 @@ move mof,r3 checkr3 ffffffff + .align 4 moveq 2,r3 moveq -1,r4 mulu.d r4,r3 @@ -98,6 +103,7 @@ checkr3 1fffe move mof,r3 checkr3 0 + nop moveq 2,r3 move.d 0xffff,r4 @@ -138,6 +144,7 @@ checkr3 fdbdade2 move mof,r3 checkr3 ffffffff + nop move.d 0x5432f789,r4 move.d 0x78134452,r3 @@ -146,6 +153,7 @@ checkr3 420fade2 move mof,r3 checkr3 0 + nop move.d 0xff,r3 moveq 2,r4 @@ -186,6 +194,7 @@ checkr3 1 move mof,r3 checkr3 0 + nop moveq -1,r4 move.d r4,r3 @@ -194,6 +203,7 @@ checkr3 fe01 move mof,r3 checkr3 0 + nop move.d 0xfeda49ff,r4 move.d r4,r3 @@ -202,6 +212,7 @@ checkr3 1 move mof,r3 checkr3 0 + nop move.d 0xfeda49ff,r4 move.d r4,r3 From d72132c02ebabf0c17986da865e3b15ba4dae1f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 6 Dec 2018 17:59:45 +0000 Subject: [PATCH 20/26] tests/tcg: enable cris base user-mode tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This converts the existing Makefile into a Makefile.target and updates it so it can be called by the tcg build system. The original Makefile didn't set -cpu except for the v17 tests however that has broken (I assume because linux-user is a "max" cpu) so here I force it to be crisv17. I've also replicated the GNU simulator targets (run-FOO-on-sim). Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + tests/tcg/cris/Makefile | 168 -------------------------------- tests/tcg/cris/Makefile.include | 6 ++ tests/tcg/cris/Makefile.target | 58 +++++++++++ 4 files changed, 65 insertions(+), 168 deletions(-) delete mode 100644 tests/tcg/cris/Makefile create mode 100644 tests/tcg/cris/Makefile.include create mode 100644 tests/tcg/cris/Makefile.target diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 83d43c50e4..60314d293a 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -116,6 +116,7 @@ docker-image-tricore-cross: docker-image-debian9 DOCKER_PARTIAL_IMAGES += debian-alpha-cross debian-hppa-cross debian-m68k-cross debian-sh4-cross DOCKER_PARTIAL_IMAGES += debian-sparc64-cross debian-mips64-cross debian-riscv64-cross DOCKER_PARTIAL_IMAGES += debian-tricore-cross debian-powerpc-cross fedora-i386-cross +DOCKER_PARTIAL_IMAGES += fedora-cris-cross # Rules for building linux-user powered images # diff --git a/tests/tcg/cris/Makefile b/tests/tcg/cris/Makefile deleted file mode 100644 index 664b30ce81..0000000000 --- a/tests/tcg/cris/Makefile +++ /dev/null @@ -1,168 +0,0 @@ --include ../../../config-host.mak - -CROSS=crisv32-axis-linux-gnu- -SIM=../../../cris-linux-user/qemu-cris -L ./ -SIMG=cris-axis-linux-gnu-run --sysroot=./ - -CC = $(CROSS)gcc -#AS = $(CROSS)as -AS = $(CC) -x assembler-with-cpp -SIZE = $(CROSS)size -LD = $(CC) -OBJCOPY = $(CROSS)objcopy - -# we rely on GCC inline:ing the stuff we tell it to in many places here. -CFLAGS = -Winline -Wall -g -O2 -static -NOSTDFLAGS = -nostartfiles -nostdlib -ASFLAGS += -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/ -LDLIBS = -NOSTDLIBS = -lgcc - -CRT = crt.o -SYS = sys.o -TESTCASES += check_abs.tst -TESTCASES += check_addc.tst -TESTCASES += check_addcm.tst -TESTCASES += check_addcv17.tst -TESTCASES += check_addo.tst -TESTCASES += check_addoq.tst -TESTCASES += check_addi.tst -TESTCASES += check_addiv32.tst -TESTCASES += check_addm.tst -TESTCASES += check_addr.tst -TESTCASES += check_addq.tst -TESTCASES += check_addxc.tst -TESTCASES += check_addxm.tst -TESTCASES += check_addxr.tst -TESTCASES += check_andc.tst -TESTCASES += check_andm.tst -TESTCASES += check_andr.tst -TESTCASES += check_andq.tst -TESTCASES += check_asr.tst -TESTCASES += check_ba.tst -TESTCASES += check_bas.tst -TESTCASES += check_bcc.tst -TESTCASES += check_bound.tst -TESTCASES += check_boundc.tst -TESTCASES += check_boundr.tst -TESTCASES += check_btst.tst -TESTCASES += check_clearfv32.tst -TESTCASES += check_cmpc.tst -TESTCASES += check_cmpr.tst -TESTCASES += check_cmpq.tst -TESTCASES += check_cmpm.tst -TESTCASES += check_cmpxc.tst -TESTCASES += check_cmpxm.tst -TESTCASES += check_cmp-2.tst -TESTCASES += check_clrjmp1.tst -TESTCASES += check_dstep.tst -TESTCASES += check_ftag.tst -TESTCASES += check_int64.tst -# check_jsr is broken. -#TESTCASES += check_jsr.tst -TESTCASES += check_mcp.tst -TESTCASES += check_movei.tst -TESTCASES += check_mover.tst -TESTCASES += check_moverm.tst -TESTCASES += check_moveq.tst -TESTCASES += check_movemr.tst -TESTCASES += check_movemrv32.tst -TESTCASES += check_movecr.tst -TESTCASES += check_movmp.tst -TESTCASES += check_movpr.tst -TESTCASES += check_movprv32.tst -TESTCASES += check_movdelsr1.tst -TESTCASES += check_movpmv32.tst -TESTCASES += check_movsr.tst -TESTCASES += check_movsm.tst -TESTCASES += check_movscr.tst -TESTCASES += check_movur.tst -TESTCASES += check_movum.tst -TESTCASES += check_movucr.tst -TESTCASES += check_mulx.tst -TESTCASES += check_mulv32.tst -TESTCASES += check_neg.tst -TESTCASES += check_not.tst -TESTCASES += check_lz.tst -TESTCASES += check_lapc.tst -TESTCASES += check_lsl.tst -TESTCASES += check_lsr.tst -TESTCASES += check_orc.tst -TESTCASES += check_orm.tst -TESTCASES += check_orr.tst -TESTCASES += check_orq.tst -TESTCASES += check_ret.tst -TESTCASES += check_swap.tst -TESTCASES += check_scc.tst -TESTCASES += check_subc.tst -TESTCASES += check_subq.tst -TESTCASES += check_subr.tst -TESTCASES += check_subm.tst -TESTCASES += check_glibc_kernelversion.tst -TESTCASES += check_xarith.tst - -TESTCASES += check_hello.ctst -TESTCASES += check_stat1.ctst -TESTCASES += check_stat2.ctst -TESTCASES += check_stat3.ctst -TESTCASES += check_stat4.ctst -TESTCASES += check_openpf1.ctst -TESTCASES += check_openpf2.ctst -TESTCASES += check_openpf3.ctst -TESTCASES += check_openpf5.ctst -TESTCASES += check_mapbrk.ctst -TESTCASES += check_mmap1.ctst -TESTCASES += check_mmap2.ctst -TESTCASES += check_mmap3.ctst -TESTCASES += check_sigalrm.ctst -TESTCASES += check_time2.ctst -TESTCASES += check_settls1.ctst - -TESTCASES += check_gcctorture_pr28634-1.ctst -#TESTCASES += check_gcctorture_pr28634.ctst - -all: build - -%.o: $(SRC_PATH)/tests/tcg/cris/%.c - $(CC) $(CFLAGS) -c $< -o $@ - -%.o: $(SRC_PATH)/tests/tcg/cris/%.s - $(AS) $(ASFLAGS) -c $< -o $@ - -%.tst: %.o - $(CC) $(CFLAGS) $(NOSTDFLAGS) $(LDLIBS) $(NOSTDLIBS) $(CRT) $< $(SYS) -o $@ - -%.ctst: %.o - $(CC) $(CFLAGS) $(LDLIBS) $< -o $@ - - -sysv10.o: sys.c - $(CC) $(CFLAGS) -mcpu=v10 -c $< -o $@ - -crtv10.o: crt.s - $(AS) $(ASFLAGS) -mcpu=v10 -c $< -o $@ - -check_addcv17.tst: ASFLAGS += -mcpu=v10 -check_addcv17.tst: CRT := crtv10.o -check_addcv17.tst: SYS := sysv10.o -check_addcv17.tst: crtv10.o sysv10.o - -build: $(CRT) $(SYS) $(TESTCASES) - -check: $(CRT) $(SYS) $(TESTCASES) - @printf "\nQEMU simulator.\n" - for case in $(TESTCASES); do \ - printf %s "$$case "; \ - SIMARGS=; \ - case $$case in *v17*) SIMARGS="-cpu crisv17";; esac; \ - $(SIM) $$SIMARGS ./$$case; \ - done -check-g: $(CRT) $(SYS) $(TESTCASES) - @printf "\nGDB simulator.\n" - @for case in $(TESTCASES); do \ - printf %s "$$case "; \ - $(SIMG) $$case; \ - done - -clean: - $(RM) -fr $(TESTCASES) *.o diff --git a/tests/tcg/cris/Makefile.include b/tests/tcg/cris/Makefile.include new file mode 100644 index 0000000000..1c037824bf --- /dev/null +++ b/tests/tcg/cris/Makefile.include @@ -0,0 +1,6 @@ +# +# Makefile.include for all CRIS targets +# + +DOCKER_IMAGE=fedora-cris-cross +DOCKER_CROSS_COMPILER=cris-linux-gnu-gcc diff --git a/tests/tcg/cris/Makefile.target b/tests/tcg/cris/Makefile.target new file mode 100644 index 0000000000..c1173ead42 --- /dev/null +++ b/tests/tcg/cris/Makefile.target @@ -0,0 +1,58 @@ +# -*- Mode: makefile -*- +# +# Cris tests +# +# Currently we can only build the "bare" tests with the docker +# supplied cross-compiler. +# + +CRIS_SRC = $(SRC_PATH)/tests/tcg/cris/bare +CRIS_ALL = $(wildcard $(CRIS_SRC)/*.s) +CRIS_TESTS = $(patsubst $(CRIS_SRC)/%.s, %, $(CRIS_ALL)) +# Filter out common blobs and broken tests +CRIS_BROKEN_TESTS = crt check_jsr +# upstream GCC doesn't support v32 +CRIS_BROKEN_TESTS += check_mcp check_mulv32 check_addiv32 check_movpmv32 +CRIS_BROKEN_TESTS += check_movprv32 check_clearfv32 check_movemrv32 check_bas +CRIS_BROKEN_TESTS += check_lapc check_movei +# no sure why +CRIS_BROKEN_TESTS += check_scc check_xarith + +CRIS_USABLE_TESTS = $(filter-out $(CRIS_BROKEN_TESTS), $(CRIS_TESTS)) +CRIS_RUNS = $(patsubst %, run-%, $(CRIS_USABLE_TESTS)) + +# override the list of tests, as we can't build the multiarch tests +TESTS = $(CRIS_USABLE_TESTS) +VPATH = $(CRIS_SRC) + +AS = $(CC) -x assembler-with-cpp +LD = $(CC) + +# we rely on GCC inline:ing the stuff we tell it to in many places here. +CFLAGS = -Winline -Wall -g -O2 -static +NOSTDFLAGS = -nostartfiles -nostdlib +ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare +CRT_FILES = crt.o sys.o + +# stop make deleting crt files if build fails +.PRECIOUS: $(CRT_FILES) + +%.o: %.c + $(CC) -c $< -o $@ + +%.o: %.s + $(AS) $(ASFLAGS) -c $< -o $@ + +%: %.s $(CRT_FILES) + $(CC) $(ASFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT_FILES) + +# The default CPU breaks (possibly as it's max?) so force crisv17 +$(CRIS_RUNS): QEMU_OPTS=-cpu crisv17 + +# Additional runners to run under GNU SIM +CRIS_RUNS_ON_SIM=$(patsubst %, %-on-sim, $(CRIS_RUNS)) +SIMG:=cris-axis-linux-gnu-run + +# e.g.: make -f ../../tests/tcg/Makefile run-check_orm-on-sim +run-%-on-sim: + $(call run-test, $<, $(SIMG) $<, "$< on $(TARGET_NAME) with SIM") From a113ec989b74acf6a8eac68bbe41aab141d0235c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Tue, 5 Mar 2019 11:40:31 +0000 Subject: [PATCH 21/26] tests/tcg: provide a minilib for system tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We will likely want a few common functions to make up for the fact we don't have a libc and we don't want to feel like we are programming by banging rocks together. I've purloined the printf function from: https://git.virtualopensystems.com/dev/tcg_baremetal_tests Although I have tweaked the names to avoid confusing GCC about clashing with builtins. Cc: Alexander Spyridakis Cc: Kevin Wolf Signed-off-by: Alex Bennée --- tests/tcg/Makefile | 1 + tests/tcg/minilib/Makefile.target | 21 +++++ tests/tcg/minilib/minilib.h | 25 ++++++ tests/tcg/minilib/printf.c | 133 ++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 tests/tcg/minilib/Makefile.target create mode 100644 tests/tcg/minilib/minilib.h create mode 100644 tests/tcg/minilib/printf.c diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index 8dfd1a76b9..1cdd628e96 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -95,6 +95,7 @@ else # For softmmu targets we include a different Makefile fragement as the # build options for bare programs are usually pretty different. They # are expected to provide their own build recipes. +-include $(SRC_PATH)/tests/tcg/minilib/Makefile.target -include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.softmmu-target ifneq ($(TARGET_BASE_ARCH),$(TARGET_NAME)) -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target diff --git a/tests/tcg/minilib/Makefile.target b/tests/tcg/minilib/Makefile.target new file mode 100644 index 0000000000..3ed8077d0f --- /dev/null +++ b/tests/tcg/minilib/Makefile.target @@ -0,0 +1,21 @@ +# +# System test minilib objects +# +# The system tests are very constrained in terms of the library they +# support but we are not savages. We provide a few helpful routines +# that can be shared with the tests for basic I/O. +# +# They assume each arch has provided a putc function. +# + +SYSTEM_MINILIB_SRC=$(SRC_PATH)/tests/tcg/minilib +MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c) +MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS)) + +MINILIB_CFLAGS+=-nostdlib -ggdb -O0 +MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC) + +.PRECIOUS: $(MINILIB_OBJS) + +%.o: $(SYSTEM_MINILIB_SRC)/%.c + $(CC) $(CFLAGS) -c $< -o $@ diff --git a/tests/tcg/minilib/minilib.h b/tests/tcg/minilib/minilib.h new file mode 100644 index 0000000000..e23361380a --- /dev/null +++ b/tests/tcg/minilib/minilib.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2015 Virtual Open Systems SAS + * Author: Alexander Spyridakis + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#ifndef _MINILIB_H_ +#define _MINILIB_H_ + +/* + * Provided by the individual arch + */ +extern void __sys_outc(char c); + +/* + * Provided by the common minilib + */ +void ml_printf(const char *fmt, ...); + +#endif /* _MINILIB_H_ */ diff --git a/tests/tcg/minilib/printf.c b/tests/tcg/minilib/printf.c new file mode 100644 index 0000000000..121620cb16 --- /dev/null +++ b/tests/tcg/minilib/printf.c @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2015 Virtual Open Systems SAS + * Author: Alexander Spyridakis + * + * printf based on implementation by Kevin Wolf + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#include "minilib.h" + +typedef __builtin_va_list va_list; +#define va_start(ap, X) __builtin_va_start(ap, X) +#define va_arg(ap, type) __builtin_va_arg(ap, type) +#define va_end(ap) __builtin_va_end(ap) + +static void print_str(char *s) +{ + while (*s) { + __sys_outc(*s++); + } +} + +static void print_num(unsigned long long value, int base) +{ + char digits[] = "0123456789abcdef"; + char buf[32]; + int i = sizeof(buf) - 2, j; + + /* Set the buffer to 0. See problem of before. */ + for (j = 0; j < 32; j++) { + buf[j] = 0; + } + + do { + buf[i--] = digits[value % base]; + value /= base; + } while (value); + + print_str(&buf[i + 1]); +} + +void ml_printf(const char *fmt, ...) +{ + va_list ap; + char *str; + int base; + int has_long; + int alt_form; + unsigned long long val; + + va_start(ap, fmt); + + for (; *fmt; fmt++) { + if (*fmt != '%') { + __sys_outc(*fmt); + continue; + } + fmt++; + + if (*fmt == '#') { + fmt++; + alt_form = 1; + } else { + alt_form = 0; + } + + if (*fmt == 'l') { + fmt++; + if (*fmt == 'l') { + fmt++; + has_long = 2; + } else { + has_long = 1; + } + } else { + has_long = 0; + } + + switch (*fmt) { + case 'x': + case 'p': + base = 16; + goto convert_number; + case 'd': + case 'i': + case 'u': + base = 10; + goto convert_number; + case 'o': + base = 8; + goto convert_number; + + convert_number: + switch (has_long) { + case 0: + val = va_arg(ap, unsigned int); + break; + case 1: + val = va_arg(ap, unsigned long); + break; + case 2: + val = va_arg(ap, unsigned long long); + break; + } + + if (alt_form && base == 16) { + print_str("0x"); + } + + print_num(val, base); + break; + + case 's': + str = va_arg(ap, char*); + print_str(str); + break; + case '%': + __sys_outc(*fmt); + break; + default: + __sys_outc('%'); + __sys_outc(*fmt); + break; + } + } + + va_end(ap); +} From 40d6ee9450b966f56a7df9874939b05f33040c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 1 Mar 2019 16:37:02 +0000 Subject: [PATCH 22/26] tests/tcg/i386: add system mode Hello World test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This introduces the build framework for simple i386 system tests. The first test is the eponymous "Hello World" which simply outputs the text on the serial port and then exits. I've included the framework for x86_64 but it is not in this series as it is a work in progress. Signed-off-by: Alex Bennée --- tests/tcg/i386/Makefile.softmmu-target | 46 +++++++ tests/tcg/i386/system/boot.S | 172 +++++++++++++++++++++++++ tests/tcg/i386/system/hello.c | 14 ++ tests/tcg/i386/system/kernel.ld | 23 ++++ 4 files changed, 255 insertions(+) create mode 100644 tests/tcg/i386/Makefile.softmmu-target create mode 100644 tests/tcg/i386/system/boot.S create mode 100644 tests/tcg/i386/system/hello.c create mode 100644 tests/tcg/i386/system/kernel.ld diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target new file mode 100644 index 0000000000..53c9c5ece0 --- /dev/null +++ b/tests/tcg/i386/Makefile.softmmu-target @@ -0,0 +1,46 @@ +# +# x86 system tests +# +# This currently builds only for i386. The common C code is built +# with standard compiler flags however so we can support both by +# adding additional boot files for x86_64. +# + +I386_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/i386/system +X64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system +# Set search path for all sources +VPATH+=$(I386_SYSTEM_SRC) + +# These objects provide the basic boot code and helper functions for all tests +CRT_OBJS=boot.o + +X86_TEST_SRCS=$(wildcard $(I386_SYSTEM_SRC)/*.c) +X86_TESTS = $(patsubst $(I386_SYSTEM_SRC)/%.c, %, $(X86_TEST_SRCS)) + +ifeq ($(TARGET_X86_64), y) +CRT_PATH=$(X64_SYSTEM_SRC) +LINK_SCRIPT=$(X64_SYSTEM_SRC)/kernel.ld +LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_x86_64 +else +CRT_PATH=$(I386_SYSTEM_SRC) +CFLAGS+=-m32 +LINK_SCRIPT=$(I386_SYSTEM_SRC)/kernel.ld +LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_i386 +# FIXME: move to common once x86_64 is bootstrapped +TESTS+=$(X86_TESTS) +endif +CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC) +LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc + +# building head blobs +.PRECIOUS: $(CRT_OBJS) + +%.o: $(CRT_PATH)/%.S + $(CC) $(CFLAGS) -c $< -o $@ + +# Build and link the tests +%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) + $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) + +# Running +QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel diff --git a/tests/tcg/i386/system/boot.S b/tests/tcg/i386/system/boot.S new file mode 100644 index 0000000000..90aa174908 --- /dev/null +++ b/tests/tcg/i386/system/boot.S @@ -0,0 +1,172 @@ +/* + * i386 boot code, based on qemu-bmibug. + * + * Copyright 2019 Doug Gale + * Copyright 2019 Linaro + * + * This work is licensed under the terms of the GNU GPL, version 3 or later. + * See the COPYING file in the top-level directory. + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + + .section .head + + /* Multi-boot header */ +multiboot_st: + .int 0x1BADB002 + .int 0x10000 + .int -(0x10000+0x1BADB002) + // Load address + .int __load_st + .int __load_st + .int __load_en + .int __bss_en + .int _start + // mode + .int 0 + // width + .int 0 + // height + .int 0 + // depth + .int 0 + + .code32 + .section .text + + /* Kernel Entry Point */ +.global _start +_start: + // Setup stack ASAP + mov $stack_end,%esp + + // Load GDT ASAP + lgdt gdtr + ljmp $0x8,$.Lloadcs +.Lloadcs: + mov $0x10,%eax + mov %eax,%ds + mov %eax,%es + mov %eax,%fs + mov %eax,%gs + mov %eax,%ss + + // Fixup the IDT to the ridiculous i386 layout + xor %ebx,%ebx +.Lnextidt: + mov idt_00(,%ebx,8),%eax + shr $16,%eax + movw $0x8,idt_00+2(,%ebx,8) + movw $0x8E00,idt_00+4(,%ebx,8) + movw %ax,idt_00+6(,%ebx,8) + add $1,%ebx + cmp $32,%ebx + jl .Lnextidt + + // Load IDTR + push $idt_00 + push $((32 * 8 - 1) << 16) + lidt 2(%esp) + add $8,%esp + + /* + * Don't worry about stack frame, assume everthing + * is garbage when we return, we won't need it. + */ + call main + + /* output any non-zero result in eax to isa-debug-exit device */ + test %al, %al + jz 1f + out %ax, $0xf4 + +1: /* QEMU ACPI poweroff */ + mov $0x604,%edx + mov $0x2000,%eax + out %ax,%dx + hlt + jmp 1b + + /* + * Helper Functions + */ + + /* Output a single character to serial port */ + .global __sys_outc +__sys_outc: + pushl %ebp + movl %esp, %ebp + out %al,$0xE9 + movl %ebp, %esp + popl %ebp + ret + + + /* Interrupt Descriptor Table */ + + .section .data + .align 16 + +idt_00: .int 0, 0 +idt_01: .int 0, 0 +idt_02: .int 0, 0 +idt_03: .int 0, 0 +idt_04: .int 0, 0 +idt_05: .int 0, 0 +idt_06: .int 0, 0 /* intr_6_opcode, Invalid Opcode */ +idt_07: .int 0, 0 +idt_08: .int 0, 0 +idt_09: .int 0, 0 +idt_0A: .int 0, 0 +idt_0B: .int 0, 0 +idt_0C: .int 0, 0 +idt_0D: .int 0, 0 +idt_0E: .int 0, 0 +idt_0F: .int 0, 0 +idt_10: .int 0, 0 +idt_11: .int 0, 0 +idt_12: .int 0, 0 +idt_13: .int 0, 0 +idt_14: .int 0, 0 +idt_15: .int 0, 0 +idt_16: .int 0, 0 +idt_17: .int 0, 0 +idt_18: .int 0, 0 +idt_19: .int 0, 0 +idt_1A: .int 0, 0 +idt_1B: .int 0, 0 +idt_1C: .int 0, 0 +idt_1D: .int 0, 0 +idt_1E: .int 0, 0 +idt_1F: .int 0, 0 + +gdt: + .short 0 +gdtr: + .short gdt_en - gdt - 1 + .int gdt + + // Code + .short 0xFFFF + .short 0 + .byte 0 + .byte 0x9b + .byte 0xCF + .byte 0 + + // Data + .short 0xFFFF + .short 0 + .byte 0 + .byte 0x93 + .byte 0xCF + .byte 0 + +gdt_en: + + .section .bss + .align 16 + +stack: .space 65536 +stack_end: diff --git a/tests/tcg/i386/system/hello.c b/tests/tcg/i386/system/hello.c new file mode 100644 index 0000000000..821dc0ef09 --- /dev/null +++ b/tests/tcg/i386/system/hello.c @@ -0,0 +1,14 @@ +/* + * Hello World, system test version + * + * We don't have the benefit of libc, just builtin C primitives and + * whatever is in minilib. + */ + +#include + +int main(void) +{ + ml_printf("Hello World\n"); + return 0; +} diff --git a/tests/tcg/i386/system/kernel.ld b/tests/tcg/i386/system/kernel.ld new file mode 100644 index 0000000000..92de525e93 --- /dev/null +++ b/tests/tcg/i386/system/kernel.ld @@ -0,0 +1,23 @@ +SECTIONS { + . = 0x100000; + + .text : { + __load_st = .; + *(.head) + *(.text) + } + + .rodata : { + *(.rodata) + } + + .data : { + *(.data) + __load_en = .; + } + + .bss : { + *(.bss) + __bss_en = .; + } +} From 8a2af7a70c688750104df8abf0c3925f78bedd3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 4 Mar 2019 19:32:41 +0000 Subject: [PATCH 23/26] tests/tcg/i386: add memory test to exercise softmmu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a simple test to check various access patterns to memory including unaligned access. Signed-off-by: Alex Bennée --- tests/tcg/i386/system/memory.c | 243 +++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 tests/tcg/i386/system/memory.c diff --git a/tests/tcg/i386/system/memory.c b/tests/tcg/i386/system/memory.c new file mode 100644 index 0000000000..a7a0a8e978 --- /dev/null +++ b/tests/tcg/i386/system/memory.c @@ -0,0 +1,243 @@ +/* + * Memory Test + * + * This is intended to test the softmmu code and ensure we properly + * behave across normal and unaligned accesses across several pages. + * We are not replicating memory tests for stuck bits and other + * hardware level failures but looking for issues with different size + * accesses when: + + * + */ + +#include +#include + +#define TEST_SIZE (4096 * 4) /* 4 pages */ + +static uint8_t test_data[TEST_SIZE]; + +static void pdot(int count) +{ + if (count % 128 == 0) { + ml_printf("."); + } +} + + +/* + * Fill the data with ascending value bytes. As x86 is a LE machine we + * write in ascending order and then read and high byte should either + * be zero or higher than the lower bytes. + */ + +static void init_test_data_u8(void) +{ + uint8_t count = 0, *ptr = &test_data[0]; + int i; + + ml_printf("Filling test area with u8:"); + for (i = 0; i < TEST_SIZE; i++) { + *ptr++ = count++; + pdot(i); + } + ml_printf("done\n"); +} + +static void init_test_data_u16(int offset) +{ + uint8_t count = 0; + uint16_t word, *ptr = (uint16_t *) &test_data[0]; + const int max = (TEST_SIZE - offset) / sizeof(word); + int i; + + ml_printf("Filling test area with u16 (offset %d):", offset); + + /* Leading zeros */ + for (i = 0; i < offset; i++) { + *ptr = 0; + } + + ptr = (uint16_t *) &test_data[offset]; + for (i = 0; i < max; i++) { + uint8_t high, low; + low = count++; + high = count++; + word = (high << 8) | low; + *ptr++ = word; + pdot(i); + } + ml_printf("done\n"); +} + +static void init_test_data_u32(int offset) +{ + uint8_t count = 0; + uint32_t word, *ptr = (uint32_t *) &test_data[0]; + const int max = (TEST_SIZE - offset) / sizeof(word); + int i; + + ml_printf("Filling test area with u32 (offset %d):", offset); + + /* Leading zeros */ + for (i = 0; i < offset; i++) { + *ptr = 0; + } + + ptr = (uint32_t *) &test_data[offset]; + for (i = 0; i < max; i++) { + uint8_t b1, b2, b3, b4; + b4 = count++; + b3 = count++; + b2 = count++; + b1 = count++; + word = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; + *ptr++ = word; + pdot(i); + } + ml_printf("done\n"); +} + + +static int read_test_data_u16(int offset) +{ + uint16_t word, *ptr = (uint16_t *)&test_data[offset]; + int i; + const int max = (TEST_SIZE - offset) / sizeof(word); + + ml_printf("Reading u16 from %#lx (offset %d):", ptr, offset); + + for (i = 0; i < max; i++) { + uint8_t high, low; + word = *ptr++; + high = (word >> 8) & 0xff; + low = word & 0xff; + if (high < low && high != 0) { + ml_printf("Error %d < %d\n", high, low); + return 1; + } else { + pdot(i); + } + + } + ml_printf("done\n"); + return 0; +} + +static int read_test_data_u32(int offset) +{ + uint32_t word, *ptr = (uint32_t *)&test_data[offset]; + int i; + const int max = (TEST_SIZE - offset) / sizeof(word); + + ml_printf("Reading u32 from %#lx (offset %d):", ptr, offset); + + for (i = 0; i < max; i++) { + uint8_t b1, b2, b3, b4; + word = *ptr++; + + b1 = word >> 24 & 0xff; + b2 = word >> 16 & 0xff; + b3 = word >> 8 & 0xff; + b4 = word & 0xff; + + if ((b1 < b2 && b1 != 0) || + (b2 < b3 && b2 != 0) || + (b3 < b4 && b3 != 0)) { + ml_printf("Error %d, %d, %d, %d", b1, b2, b3, b4); + return 2; + } else { + pdot(i); + } + } + ml_printf("done\n"); + return 0; +} + +static int read_test_data_u64(int offset) +{ + uint64_t word, *ptr = (uint64_t *)&test_data[offset]; + int i; + const int max = (TEST_SIZE - offset) / sizeof(word); + + ml_printf("Reading u64 from %#lx (offset %d):", ptr, offset); + + for (i = 0; i < max; i++) { + uint8_t b1, b2, b3, b4, b5, b6, b7, b8; + word = *ptr++; + + b1 = ((uint64_t) (word >> 56)) & 0xff; + b2 = ((uint64_t) (word >> 48)) & 0xff; + b3 = ((uint64_t) (word >> 40)) & 0xff; + b4 = (word >> 32) & 0xff; + b5 = (word >> 24) & 0xff; + b6 = (word >> 16) & 0xff; + b7 = (word >> 8) & 0xff; + b8 = (word >> 0) & 0xff; + + if ((b1 < b2 && b1 != 0) || + (b2 < b3 && b2 != 0) || + (b3 < b4 && b3 != 0) || + (b4 < b5 && b4 != 0) || + (b5 < b6 && b5 != 0) || + (b6 < b7 && b6 != 0) || + (b7 < b8 && b7 != 0)) { + ml_printf("Error %d, %d, %d, %d, %d, %d, %d, %d", + b1, b2, b3, b4, b5, b6, b7, b8); + return 2; + } else { + pdot(i); + } + } + ml_printf("done\n"); + return 0; +} + +/* Read the test data and verify at various offsets */ +int do_reads(void) +{ + int r = 0; + int off = 0; + + while (r == 0 && off < 8) { + r = read_test_data_u16(off); + r |= read_test_data_u32(off); + r |= read_test_data_u64(off); + off++; + } + + return r; +} + +int main(void) +{ + int i, r = 0; + + + init_test_data_u8(); + r = do_reads(); + if (r) { + return r; + } + + for (i = 0; i < 8; i++) { + init_test_data_u16(i); + + r = do_reads(); + if (r) { + return r; + } + } + + for (i = 0; i < 8; i++) { + init_test_data_u32(i); + + r = do_reads(); + if (r) { + return r; + } + } + + ml_printf("Test complete: %s\n", r == 0 ? "PASSED" : "FAILED"); + return r; +} From b6407281513ddca03c2dbce0b1e48eb7afd14cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Tue, 12 Mar 2019 15:42:21 +0000 Subject: [PATCH 24/26] tests/tcg/arm: account for pauth randomness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pointer authentication isn't guaranteed to always detect a clash between different keys. Take this into account in the test by running several times and checking the percentage hit rate of the test. Cc: Richard Henderson Signed-off-by: Alex Bennée --- tests/tcg/aarch64/pauth-1.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/tcg/aarch64/pauth-1.c b/tests/tcg/aarch64/pauth-1.c index ae6dc05c2b..a3c1443cd0 100644 --- a/tests/tcg/aarch64/pauth-1.c +++ b/tests/tcg/aarch64/pauth-1.c @@ -1,5 +1,6 @@ #include #include +#include asm(".arch armv8.4-a"); @@ -8,16 +9,29 @@ asm(".arch armv8.4-a"); #define PR_PAC_APDAKEY (1 << 2) #endif +#define TESTS 1000 + int main() { - int x; + int x, i, count = 0; void *p0 = &x, *p1, *p2; + float perc; - asm volatile("pacdza %0" : "=r"(p1) : "0"(p0)); - prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0); - asm volatile("pacdza %0" : "=r"(p2) : "0"(p0)); + for (i = 0; i < TESTS; i++) { + asm volatile("pacdza %0" : "=r"(p1) : "0"(p0)); + prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0); + asm volatile("pacdza %0" : "=r"(p2) : "0"(p0)); - assert(p1 != p0); - assert(p1 != p2); + if (p1 != p0) { + count++; + } + if (p1 != p2) { + count++; + } + } + + perc = (float) count / (float) (TESTS * 2); + printf("Ptr Check: %0.2f%%", perc * 100.0); + assert(perc > 0.95); return 0; } From df2bb38eda2def33cefd3a7ee993b2aff02c4829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 28 Feb 2019 10:15:29 +0000 Subject: [PATCH 25/26] .travis.yml: separate softfloat from check-tcg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While used by TCG it is not explicitly part of TCG and the tests can be run standalone in a minimal build. Signed-off-by: Alex Bennée --- .travis.yml | 6 ++++++ tests/Makefile.include | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d5c9bbf1b2..b02e7318c1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -85,6 +85,12 @@ matrix: - CONFIG="--disable-user" + # Just build tools and run minimal unit and softfloat checks + - env: + - BASE_CONFIG="--enable-tools" + - CONFIG="--disable-user --disable-system" + - TEST_CMD="make check-unit check-softfloat -j3" + - env: - CONFIG="--enable-debug --enable-debug-tcg --disable-user" diff --git a/tests/Makefile.include b/tests/Makefile.include index 75b682cbe8..852f17b8c7 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -1090,7 +1090,7 @@ clean-tcg-tests-%: build-tcg: $(BUILD_TCG_TARGET_RULES) .PHONY: check-tcg -check-tcg: check-softfloat $(RUN_TCG_TARGET_RULES) +check-tcg: $(RUN_TCG_TARGET_RULES) .PHONY: clean-tcg clean-tcg: $(CLEAN_TCG_TARGET_RULES) From dab3a7c0f54cedc542205fb6f29184b510dfe479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 28 Feb 2019 10:18:43 +0000 Subject: [PATCH 26/26] .travis.yml: add softmmu check-tcg tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alex Bennée --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index b02e7318c1..980fc5c1eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -265,6 +265,12 @@ matrix: - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; } + # Run check-tcg against linux-user - env: - CONFIG="--disable-system" - TEST_CMD="make -j3 check-tcg V=1" + + # Run check-tcg against softmmu targets + - env: + - CONFIG="--target-list=xtensa-softmmu,arm-softmmu" + - TEST_CMD="make -j3 check-tcg V=1"