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.
+
+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
--
2.17.0
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
>>>
© 2016 - 2025 Red Hat, Inc.