1# -*- Mode: makefile -*- 2# 3# Multiarch system tests 4# 5# We just collect the tests together here and rely on the actual guest 6# architecture to add to the test dependencies and deal with the 7# complications of building. 8# 9# To support the multiarch guests the target arch needs to provide a 10# boot.S that jumps to main and provides a __sys_outc functions. 11# Remember to update MULTIARCH_SOFTMMU_TARGETS in the tcg test 12# Makefile.target when this is done. 13# 14 15MULTIARCH_SRC=$(SRC_PATH)/tests/tcg/multiarch 16MULTIARCH_SYSTEM_SRC=$(MULTIARCH_SRC)/system 17VPATH+=$(MULTIARCH_SYSTEM_SRC) 18 19MULTIARCH_TEST_SRCS=$(wildcard $(MULTIARCH_SYSTEM_SRC)/*.c) 20MULTIARCH_TESTS = $(patsubst $(MULTIARCH_SYSTEM_SRC)/%.c, %, $(MULTIARCH_TEST_SRCS)) 21 22ifneq ($(GDB),) 23GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py 24 25run-gdbstub-memory: memory 26 $(call run-test, $@, $(GDB_SCRIPT) \ 27 --gdb $(GDB) \ 28 --qemu $(QEMU) \ 29 --output $<.gdb.out \ 30 --qargs \ 31 "-monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \ 32 --bin $< --test $(MULTIARCH_SRC)/gdbstub/memory.py, \ 33 softmmu gdbstub support) 34run-gdbstub-interrupt: interrupt 35 $(call run-test, $@, $(GDB_SCRIPT) \ 36 --gdb $(GDB) \ 37 --qemu $(QEMU) \ 38 --output $<.gdb.out \ 39 --qargs \ 40 "-smp 2 -monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \ 41 --bin $< --test $(MULTIARCH_SRC)/gdbstub/interrupt.py, \ 42 softmmu gdbstub support) 43run-gdbstub-untimely-packet: hello 44 $(call run-test, $@, $(GDB_SCRIPT) \ 45 --gdb $(GDB) \ 46 --gdb-args "-ex 'set debug remote 1'" \ 47 --output untimely-packet.gdb.out \ 48 --stderr untimely-packet.gdb.err \ 49 --qemu $(QEMU) \ 50 --bin $< --qargs \ 51 "-monitor none -display none -chardev file$(COMMA)path=untimely-packet.out$(COMMA)id=output $(QEMU_OPTS)", \ 52 softmmu gdbstub untimely packets) 53 $(call quiet-command, \ 54 (! grep -Fq 'Packet instead of Ack, ignoring it' untimely-packet.gdb.err), \ 55 "GREP", file untimely-packet.gdb.err) 56 57run-gdbstub-registers: memory 58 $(call run-test, $@, $(GDB_SCRIPT) \ 59 --gdb $(GDB) \ 60 --qemu $(QEMU) \ 61 --output $<.registers.gdb.out \ 62 --qargs \ 63 "-monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \ 64 --bin $< --test $(MULTIARCH_SRC)/gdbstub/registers.py, \ 65 softmmu gdbstub support) 66else 67run-gdbstub-%: 68 $(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support") 69endif 70 71MULTIARCH_RUNS += run-gdbstub-memory run-gdbstub-interrupt \ 72 run-gdbstub-untimely-packet run-gdbstub-registers 73 74ifeq ($(CONFIG_PLUGIN),y) 75# Test plugin memory access instrumentation 76run-plugin-memory-with-libmem.so: memory libmem.so 77run-plugin-memory-with-libmem.so: PLUGIN_ARGS=$(COMMA)region-summary=true 78run-plugin-memory-with-libmem.so: CHECK_PLUGIN_OUTPUT_COMMAND=$(MULTIARCH_SYSTEM_SRC)/validate-memory-counts.py $@.out 79 80EXTRA_RUNS_WITH_PLUGIN += run-plugin-memory-with-libmem.so 81endif 82