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