On 04/25/2018 06:08 AM, Alex Bennée wrote: > 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?
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 >>>