qemu-devel
[Top][All Lists]
Advanced

[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
>>>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]