[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 16/46] tests/tcg: move i386 specific tests in
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v3 16/46] tests/tcg: move i386 specific tests into subdir |
Date: |
Wed, 25 Apr 2018 10:42:19 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 04/25/2018 06:08 AM, Alex Bennée wrote:
> Philippe Mathieu-Daudé <address@hidden> 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 <address@hidden>
>>> Reviewed-by: Thomas Huth <address@hidden>
>>> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>>> Tested-by: Philippe Mathieu-Daudé <address@hidden>
>>> ---
>>> 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?
Oh I'm not asking you to fix this ASan problem :)
At least not in this series :P
>
>> 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.
OK, this is annoying but only a warning.
>
>>
>> $ 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
>>>
[Qemu-devel] [PATCH v3 35/46] tests/tcg: enable building for Alpha, Alex Bennée, 2018/04/24
[Qemu-devel] [PATCH v3 46/46] tests/tcg: override runners for broken tests (!UPSTREAM), Alex Bennée, 2018/04/24
[Qemu-devel] [PATCH v3 41/46] tests/tcg: enable building for sparc64, Alex Bennée, 2018/04/24
[Qemu-devel] [PATCH v3 42/46] tests/tcg: enable building for mips64, Alex Bennée, 2018/04/24
[Qemu-devel] [PATCH v3 45/46] tests/Makefile.include: add [build|clean|check]-tcg targets, Alex Bennée, 2018/04/24
Re: [Qemu-devel] [PATCH v3 45/46] tests/Makefile.include: add [build|clean|check]-tcg targets, Philippe Mathieu-Daudé, 2018/04/24
[Qemu-devel] [PATCH v3 19/46] tests/tcg/i386: Build fix for hello-i386, Alex Bennée, 2018/04/24