Re: [PATCH v6 047/103] tests/tcg/arm: system tests
Pierrick Bouvier <[email protected]>
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 8/12/2026 8:35 AM, Alex Bennée wrote: > Pierrick Bouvier <[email protected]> writes: > >> Signed-off-by: Pierrick Bouvier <[email protected]> >> --- >> tests/tcg/arm/Makefile.softmmu-target | 80 --------------------------- >> tests/tcg/arm/meson.build | 2 + >> tests/tcg/arm/system/meson.build | 66 ++++++++++++++++++++++ >> 3 files changed, 68 insertions(+), 80 deletions(-) >> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target >> create mode 100644 tests/tcg/arm/system/meson.build >> >> diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target >> deleted file mode 100644 >> index b66074b0b43..00000000000 >> --- a/tests/tcg/arm/Makefile.softmmu-target >> +++ /dev/null >> @@ -1,80 +0,0 @@ >> -# -*- Mode: makefile -*- >> -# >> -# ARM SoftMMU tests - included from tests/tcg/Makefile >> -# >> - >> -ARM_SRC=$(SRC_PATH)/tests/tcg/arm/system >> - >> -# Set search path for all sources >> -VPATH += $(ARM_SRC) >> - >> -# Specific Test Rules >> - >> -test-armv6m-undef: test-armv6m-undef.S >> - $(CC) -mcpu=cortex-m0 -mfloat-abi=soft \ >> - -Wl,--build-id=none -x assembler-with-cpp \ >> - $< -o $@ -nostdlib -static \ >> - -T $(ARM_SRC)/[email protected] >> - >> -run-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel >> - >> -ARM_TESTS+=test-armv6m-undef >> - >> -# These objects provide the basic boot code and helper functions for all tests >> -CRT_OBJS=boot.o >> - >> -ARM_TEST_SRCS=$(wildcard $(ARM_SRC)/*.c) >> -ARM_TESTS+=$(patsubst $(ARM_SRC)/%.c, %, $(ARM_TEST_SRCS)) >> - >> -CRT_PATH=$(ARM_SRC) >> -LINK_SCRIPT=$(ARM_SRC)/kernel.ld >> -LDFLAGS=-Wl,-T$(LINK_SCRIPT) >> -CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC) >> -LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc >> - >> -# building head blobs >> -.PRECIOUS: $(CRT_OBJS) >> - >> -%.o: $(ARM_SRC)/%.S >> - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@ >> - >> -# Build and link the tests >> -%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) >> - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) >> - >> -memory: CFLAGS+=-DCHECK_UNALIGNED=0 >> - >> -# Running >> -QEMU_BASE_MACHINE=-M virt -cpu max -display none >> -QEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel >> - >> -# console test is manual only >> -QEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline >> -run-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel >> -run-semiconsole: semiconsole >> - $(call skip-test, $<, "MANUAL ONLY") >> - $(if $(V),@printf " %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<") >> -run-plugin-semiconsole-with-%: semiconsole >> - $(call skip-test, $<, "MANUAL ONLY") >> - >> -# Simple Record/Replay Test >> -.PHONY: memory-record >> -run-memory-record: memory-record memory >> - $(call run-test, $<, \ >> - $(QEMU) -monitor none -display none \ >> - -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ >> - -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \ >> - $(QEMU_OPTS) memory) >> - >> -.PHONY: memory-replay >> -run-memory-replay: memory-replay run-memory-record >> - $(call run-test, $<, \ >> - $(QEMU) -monitor none -display none \ >> - -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ >> - -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \ >> - $(QEMU_OPTS) memory) >> - >> -EXTRA_RUNS+=run-memory-replay >> - >> -TESTS += $(ARM_TESTS) $(MULTIARCH_TESTS) >> -EXTRA_RUNS+=$(MULTIARCH_RUNS) >> diff --git a/tests/tcg/arm/meson.build b/tests/tcg/arm/meson.build >> index 08a863699fb..1b491cea026 100644 >> --- a/tests/tcg/arm/meson.build >> +++ b/tests/tcg/arm/meson.build >> @@ -2,6 +2,8 @@ cc = 'arm-linux-gnueabihf-gcc' >> cc_dockerfile = 'debian-all-test-cross' >> cc_docker_host_arch = ['aarch64', 'x86_64'] >> >> +subdir('system') >> + >> tests = [] >> >> # Multi arch tests >> diff --git a/tests/tcg/arm/system/meson.build b/tests/tcg/arm/system/meson.build >> new file mode 100644 >> index 00000000000..d507cf980f6 >> --- /dev/null >> +++ b/tests/tcg/arm/system/meson.build >> @@ -0,0 +1,66 @@ >> +tests = [] >> + >> +minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib' >> +minilib_printf = files(minilib_dir / 'printf.c')[0] >> +link_script = files('kernel.ld')[0] >> +boot = files('boot.S')[0] >> +cflags = ['-nostdlib', >> + '-Wa,--noexecstack', >> + '-I', minilib_dir, minilib_printf, boot, >> + '-Wl,-T', link_script, >> + '-lgcc'] > > Needs to be: > > cflags = ['-march=armv7-a+fp', > '-ffreestanding', > '-nostdlib', > ... > I'll add it, thanks. > >> +qemu_base_args = ['-display', 'none', >> + '-semihosting-config', 'enable=on', >> + '-kernel'] >> +qemu_def_args = ['-M', 'virt', '-cpu', 'max', qemu_base_args] >> + >> +# Multi arch tests >> +multi_src = [] >> +foreach t: tcg_tests['multiarch-softmmu']['tests'] >> + foreach src, setup: t >> + new_cflags = cflags >> + if fs.stem(src) == 'memory' >> + new_cflags += '-DCHECK_UNALIGNED=0' >> + endif >> + if src not in multi_src >> + setup += {'cflags': [new_cflags]} >> + multi_src += src >> + endif >> + tests += {src: setup + {'qemu_args': qemu_def_args}} >> + endforeach >> +endforeach >> + >> +tests += { >> + 'test-armv6m-undef.S': { >> + 'cflags': ['-mcpu=cortex-m0', '-mfloat-abi=soft', '-nostdlib', >> + '-T', files('test-armv6m-undef.ld')], >> + 'qemu_args': ['-M', 'microbit', qemu_base_args], >> + }, >> + 'semiconsole.c': { >> + 'cflags': cflags, >> + 'qemu_args': ['-serial', 'none', '-chardev', 'stdio,mux=on,id=stdio0', >> + '-semihosting-config', 'enable=on,chardev=stdio0', >> + '-mon', 'chardev=stdio0,mode=readline', >> + qemu_def_args], >> + 'wrapper': [prog_run_with_input, 'X'] >> + }, >> + '../../multiarch/system/memory.c': { >> + 'test_name': 'memory-record-replay', >> + 'qemu_args': qemu_def_args, >> + 'wrapper': [prog_record_replay], >> + }, >> +} >> + >> +if 'qemu-system-arm' in emulators >> + tcg_tests += { >> + 'arm-softmmu': { >> + 'cc': cc, >> + 'cc_dockerfile': cc_dockerfile, >> + 'cc_docker_host_arch': cc_docker_host_arch, >> + 'folder': 'arm/system', >> + 'gdb_arch': 'arm', >> + 'qemu': emulators['qemu-system-arm'], >> + 'tests': tests, >> + } >> + } >> +endif >