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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.