Philippe Mathieu-Daudé <f4...@amsat.org> writes:

> On 04/24/2018 12:23 PM, Alex Bennée wrote:
>> These only need to be built for i386 guests. This includes a stub
>> tests/tcg/i386/Makfile.target which absorbs some of what was in
>> tests/tcg/Makefile.
>>
>> Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
>> Reviewed-by: Thomas Huth <th...@redhat.com>
>> Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>
>> Tested-by: Philippe Mathieu-Daudé <f4...@amsat.org>
>> ---
>> v2
>>   - move VPATH and TESTs setup into i386/Makefile.target
>>   - set CFLAGS+=-m32 for cross building
>> ---
>>  tests/tcg/README                        |  39 ------------------------
>>  tests/tcg/i386/Makefile.target          |  30 ++++++++++++++++++
>>  tests/tcg/i386/README                   |  38 +++++++++++++++++++++++
>>  tests/tcg/{ => i386}/hello-i386.c       |   0
>>  tests/tcg/{ => i386}/pi_10.com          | Bin
>>  tests/tcg/{ => i386}/runcom.c           |   0
>>  tests/tcg/{ => i386}/test-i386-code16.S |   0
>>  tests/tcg/{ => i386}/test-i386-fprem.c  |   0
>>  tests/tcg/{ => i386}/test-i386-muldiv.h |   0
>>  tests/tcg/{ => i386}/test-i386-shift.h  |   0
>>  tests/tcg/{ => i386}/test-i386-ssse3.c  |   0
>>  tests/tcg/{ => i386}/test-i386-vm86.S   |   0
>>  tests/tcg/{ => i386}/test-i386.c        |   0
>>  tests/tcg/{ => i386}/test-i386.h        |   0
>>  14 files changed, 68 insertions(+), 39 deletions(-)
>>  create mode 100644 tests/tcg/i386/Makefile.target
>>  create mode 100644 tests/tcg/i386/README
>>  rename tests/tcg/{ => i386}/hello-i386.c (100%)
>>  rename tests/tcg/{ => i386}/pi_10.com (100%)
>>  rename tests/tcg/{ => i386}/runcom.c (100%)
>>  rename tests/tcg/{ => i386}/test-i386-code16.S (100%)
>>  rename tests/tcg/{ => i386}/test-i386-fprem.c (100%)
>>  rename tests/tcg/{ => i386}/test-i386-muldiv.h (100%)
>>  rename tests/tcg/{ => i386}/test-i386-shift.h (100%)
>>  rename tests/tcg/{ => i386}/test-i386-ssse3.c (100%)
>>  rename tests/tcg/{ => i386}/test-i386-vm86.S (100%)
>>  rename tests/tcg/{ => i386}/test-i386.c (100%)
>>  rename tests/tcg/{ => i386}/test-i386.h (100%)
>>
>> diff --git a/tests/tcg/README b/tests/tcg/README
>> index 0890044cf0..469504c4cb 100644
>> --- a/tests/tcg/README
>> +++ b/tests/tcg/README
>> @@ -3,45 +3,6 @@ regression testing. Tests are either multi-arch, meaning 
>> they can be
>>  built for all guest architectures that support linux-user executable,
>>  or they are architecture specific.
>>
>> -i386
>> -====
>> -
>> -test-i386
>> ----------
>> -
>> -This program executes most of the 16 bit and 32 bit x86 instructions and
>> -generates a text output, for comparison with the output obtained with
>> -a real CPU or another emulator.
>> -
>> -The Linux system call modify_ldt() is used to create x86 selectors
>> -to test some 16 bit addressing and 32 bit with segmentation cases.
>> -
>> -The Linux system call vm86() is used to test vm86 emulation.
>> -
>> -Various exceptions are raised to test most of the x86 user space
>> -exception reporting.
>> -
>> -linux-test
>> -----------
>> -
>> -This program tests various Linux system calls. It is used to verify
>> -that the system call parameters are correctly converted between target
>> -and host CPUs.
>> -
>> -test-i386-fprem
>> ----------------
>> -
>> -runcom
>> -------
>> -
>> -test-mmap
>> ----------
>> -
>> -sha1
>> -----
>> -
>> -hello-i386
>> -----------
>>
>>
>>  ARM
>> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
>> new file mode 100644
>> index 0000000000..2f27b65e2d
>> --- /dev/null
>> +++ b/tests/tcg/i386/Makefile.target
>> @@ -0,0 +1,30 @@
>> +# i386 cross compile notes
>> +
>> +I386_SRC=$(SRC_PATH)/tests/tcg/i386
>> +
>> +# Set search path for all sources
>> +VPATH               += $(I386_SRC)
>> +
>> +I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
>> +I386_TESTS=$(I386_SRCS:.c=)
>> +
>> +# Update TESTS
>> +TESTS+=$(I386_TESTS)
>> +
>> +ifneq ($(TARGET_NAME),x86_64)
>> +CFLAGS+=-m32
>> +endif
>> +
>> +#
>> +# hello-i386 is a barebones app
>> +#
>> +hello-i386: CFLAGS+=-ffreestanding
>> +hello-i386: LDFLAGS+=-nostdlib
>> +
>> +#
>> +# test-386 includes a couple of additional objects that need to be linked 
>> together
>> +#
>> +
>> +test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S test-i386.h 
>> test-i386-shift.h test-i386-muldiv.h
>> +    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ \
>> +       $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm
>> diff --git a/tests/tcg/i386/README b/tests/tcg/i386/README
>> new file mode 100644
>> index 0000000000..7a0a47bf27
>> --- /dev/null
>> +++ b/tests/tcg/i386/README
>> @@ -0,0 +1,38 @@
>> +These are i386 specific guest programs
>> +
>> +test-i386
>> +---------
>> +
>> +This program executes most of the 16 bit and 32 bit x86 instructions and
>> +generates a text output, for comparison with the output obtained with
>> +a real CPU or another emulator.
>> +
>> +The Linux system call modify_ldt() is used to create x86 selectors
>> +to test some 16 bit addressing and 32 bit with segmentation cases.
>> +
>> +The Linux system call vm86() is used to test vm86 emulation.
>> +
>> +Various exceptions are raised to test most of the x86 user space
>> +exception reporting.
>
> So I suppose this is expected:
>
> $ make -j1 run-tcg-tests-i386-linux-user
>   BUILD   fedora-i386-cross
>   [...]
>   TEST    test-i386 on i386
> ASAN:DEADLYSIGNAL
> =================================================================
> ==8721==ERROR: AddressSanitizer: SEGV on unknown address 0x7fe768f01234
> (pc 0x5560b3382e2d bp 0x000000001234 sp 0x7ffcb44a7ef0 T0)
> ==8721==The signal is caused by a WRITE memory access.
>     #0 0x5560b3382e2c in static_code_gen_buffer
> (/source/qemu/build/full/i386-linux-user/qemu-i386+0xf64e2c)
>
> AddressSanitizer can not provide additional info.
> SUMMARY: AddressSanitizer: SEGV
> (/source/qemu/build/full/i386-linux-user/qemu-i386+0xf64e2c) in
> static_code_gen_buffer
> ==8721==ABORTING
> make[2]: *** [/source/qemu/tests/tcg/Makefile:64: run-test-i386] Error
> 1

Not sure - shouldn't ASAN be able to deal with caught exceptions?

>   TEST    hello-i386 on i386
>   SLOW TEST test-i386-fprem SKIPPED on i386
>
>> +
>> +linux-test
>> +----------
>> +
>> +This program tests various Linux system calls. It is used to verify
>> +that the system call parameters are correctly converted between target
>> +and host CPUs.
>> +
>> +test-i386-fprem
>> +---------------
>> +
>> +runcom
>> +------
>
> Also expected:
>
> $ make -j1 run-tcg-tests-i386-linux-user -k
>   BUILD   fedora-i386-cross
>   [...]
>   TEST    runcom on i386
> ASAN:DEADLYSIGNAL
> =================================================================
> ==8730==ERROR: AddressSanitizer: SEGV on unknown address 0x7f7d0a8108fe
> (pc 0x562c94475f23 bp 0x0000000108fe sp 0x7ffd036dd590 T0)
> ==8730==The signal is caused by a WRITE memory access.
>     #0 0x562c94475f22 in static_code_gen_buffer
> (/source/qemu/build/full/i386-linux-user/qemu-i386+0xe5ff22)
>
> AddressSanitizer can not provide additional info.
> SUMMARY: AddressSanitizer: SEGV
> (/source/qemu/build/full/i386-linux-user/qemu-i386+0xe5ff22) in
> static_code_gen_buffer
> ==8730==ABORTING
> make[2]: *** [/source/qemu/tests/tcg/i386/Makefile.target:38:
> run-runcom] Error 1
> make[2]: Target 'run' not remade because of errors.
> make[1]: *** [/source/qemu/tests/tcg/Makefile.include:69:
> run-guest-tests] Error 2
>
>> +
>> +test-mmap
>> +---------
>
> Any idea how to remove this "ignoring old recipe" warning?

Fix the various qemu's to not crash or expose a variable to modify a
single run-test-mmap for each architecture.

>
> $ make -j1 run-tcg-tests-i386-linux-user -k
>   BUILD   fedora-i386-cross
>   CROSS-BUILD i386 guest-tests with docker qemu:fedora-i386-cross
> /source/qemu/tests/tcg/i386/Makefile.target:50: warning: overriding
> recipe for target 'run-test-mmap'
> /source/qemu/tests/tcg/multiarch/Makefile.target:26: warning: ignoring
> old recipe for target 'run-test-mmap'
>   BUILD   fedora-i386-cross
>   CROSS-BUILD i386 guest-tests with docker qemu:fedora-i386-cross
> /source/qemu/tests/tcg/i386/Makefile.target:50: warning: overriding
> recipe for target 'run-test-mmap'
> /source/qemu/tests/tcg/multiarch/Makefile.target:26: warning: ignoring
> old recipe for target 'run-test-mmap'
>   RUN-TESTS for i386
> /source/qemu/tests/tcg/i386/Makefile.target:50: warning: overriding
> recipe for target 'run-test-mmap'
> /source/qemu/tests/tcg/multiarch/Makefile.target:26: warning: ignoring
> old recipe for target 'run-test-mmap'
>   TEST    test-mmap (default) on i386
>
>> +
>> +sha1
>> +----
>> +
>> +hello-i386
>> +----------
>> diff --git a/tests/tcg/hello-i386.c b/tests/tcg/i386/hello-i386.c
>> similarity index 100%
>> rename from tests/tcg/hello-i386.c
>> rename to tests/tcg/i386/hello-i386.c
>> diff --git a/tests/tcg/pi_10.com b/tests/tcg/i386/pi_10.com
>> similarity index 100%
>> rename from tests/tcg/pi_10.com
>> rename to tests/tcg/i386/pi_10.com
>> diff --git a/tests/tcg/runcom.c b/tests/tcg/i386/runcom.c
>> similarity index 100%
>> rename from tests/tcg/runcom.c
>> rename to tests/tcg/i386/runcom.c
>> diff --git a/tests/tcg/test-i386-code16.S b/tests/tcg/i386/test-i386-code16.S
>> similarity index 100%
>> rename from tests/tcg/test-i386-code16.S
>> rename to tests/tcg/i386/test-i386-code16.S
>> diff --git a/tests/tcg/test-i386-fprem.c b/tests/tcg/i386/test-i386-fprem.c
>> similarity index 100%
>> rename from tests/tcg/test-i386-fprem.c
>> rename to tests/tcg/i386/test-i386-fprem.c
>> diff --git a/tests/tcg/test-i386-muldiv.h b/tests/tcg/i386/test-i386-muldiv.h
>> similarity index 100%
>> rename from tests/tcg/test-i386-muldiv.h
>> rename to tests/tcg/i386/test-i386-muldiv.h
>> diff --git a/tests/tcg/test-i386-shift.h b/tests/tcg/i386/test-i386-shift.h
>> similarity index 100%
>> rename from tests/tcg/test-i386-shift.h
>> rename to tests/tcg/i386/test-i386-shift.h
>> diff --git a/tests/tcg/test-i386-ssse3.c b/tests/tcg/i386/test-i386-ssse3.c
>> similarity index 100%
>> rename from tests/tcg/test-i386-ssse3.c
>> rename to tests/tcg/i386/test-i386-ssse3.c
>> diff --git a/tests/tcg/test-i386-vm86.S b/tests/tcg/i386/test-i386-vm86.S
>> similarity index 100%
>> rename from tests/tcg/test-i386-vm86.S
>> rename to tests/tcg/i386/test-i386-vm86.S
>> diff --git a/tests/tcg/test-i386.c b/tests/tcg/i386/test-i386.c
>> similarity index 100%
>> rename from tests/tcg/test-i386.c
>> rename to tests/tcg/i386/test-i386.c
>> diff --git a/tests/tcg/test-i386.h b/tests/tcg/i386/test-i386.h
>> similarity index 100%
>> rename from tests/tcg/test-i386.h
>> rename to tests/tcg/i386/test-i386.h
>>


--
Alex Bennée

Reply via email to