Message ID | 20180424152405.10304-17-alex.bennee@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | fix building of tests/tcg | expand |
On 04/24/2018 05:23 AM, 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.bennee@linaro.org> > Reviewed-by: Thomas Huth <thuth@redhat.com> > Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > v2 > - move VPATH and TESTs setup into i386/Makefile.target > - set CFLAGS+=-m32 for cross building > --- Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
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.bennee@linaro.org> > Reviewed-by: Thomas Huth <thuth@redhat.com> > Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > Tested-by: Philippe Mathieu-Daudé <f4bug@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 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? $ 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 >
Philippe Mathieu-Daudé <f4bug@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.bennee@linaro.org> >> Reviewed-by: Thomas Huth <thuth@redhat.com> >> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> Tested-by: Philippe Mathieu-Daudé <f4bug@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
On 04/25/2018 06:08 AM, Alex Bennée wrote: > Philippe Mathieu-Daudé <f4bug@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.bennee@linaro.org> >>> Reviewed-by: Thomas Huth <thuth@redhat.com> >>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >>> Tested-by: Philippe Mathieu-Daudé <f4bug@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 >>>
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. + +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 +---------- 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