qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/6] tests/tcg: Move i386 tests to arch specific


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 1/6] tests/tcg: Move i386 tests to arch specific folder
Date: Mon, 19 Sep 2016 08:44:11 +0000

Hi

On Sat, Sep 17, 2016 at 6:05 PM Pranith Kumar <address@hidden> wrote:

> Signed-off-by: Pranith Kumar <address@hidden>
> ---
>  tests/tcg/Makefile                      | 156
> --------------------------------
>  tests/tcg/i386/Makefile                 |  88 ++++++++++++++++++
>  tests/tcg/{ => i386}/hello-i386.c       |   9 +-
>  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
>

Moving i386 specific files to their own subdir like the rest of the archs
is a good idea to me.

 13 files changed, 93 insertions(+), 160 deletions(-)
>  delete mode 100644 tests/tcg/Makefile
>  create mode 100644 tests/tcg/i386/Makefile
>  rename tests/tcg/{ => i386}/hello-i386.c (71%)
>  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/Makefile b/tests/tcg/Makefile
> deleted file mode 100644
> index 89e3342..0000000
> --- a/tests/tcg/Makefile
> +++ /dev/null
> @@ -1,156 +0,0 @@
> --include ../../config-host.mak
> --include $(SRC_PATH)/rules.mak
> -
> -$(call set-vpath, $(SRC_PATH)/tests/tcg)
> -
> -QEMU=../../i386-linux-user/qemu-i386
> -QEMU_X86_64=../../x86_64-linux-user/qemu-x86_64
> -CC_X86_64=$(CC_I386) -m64
> -
> -QEMU_INCLUDES += -I../..
> -CFLAGS=-Wall -O2 -g -fno-strict-aliasing
> -#CFLAGS+=-msse2
> -LDFLAGS=
> -
> -# TODO: automatically detect ARM and MIPS compilers, and run those too
> -
> -# runcom maps page 0, so it requires root privileges
> -# also, pi_10.com runs indefinitely
> -
> -I386_TESTS=hello-i386 \
> -          linux-test \
> -          testthread \
> -          sha1-i386 \
> -          test-i386 \
> -          test-i386-fprem \
> -          test-mmap \
> -          # runcom
> -
> -# native i386 compilers sometimes are not biarch.  assume cross-compilers
> are
> -ifneq ($(ARCH),i386)
> -I386_TESTS+=run-test-x86_64
> -endif
> -
> -TESTS = test_path
> -ifneq ($(call find-in-path, $(CC_I386)),)
> -TESTS += $(I386_TESTS)
> -endif
> -
> -all: $(patsubst %,run-%,$(TESTS))
> -test: all
> -
> -# rules to run tests
> -
> -.PHONY: $(patsubst %,run-%,$(TESTS))
> -
> -run-%: %
> -       -$(QEMU) ./$*
> -
> -run-hello-i386: hello-i386
> -run-linux-test: linux-test
> -run-testthread: testthread
> -run-sha1-i386: sha1-i386
> -
> -run-test-i386: test-i386
> -       ./test-i386 > test-i386.ref
> -       -$(QEMU) test-i386 > test-i386.out
> -       @if diff -u test-i386.ref test-i386.out ; then echo "Auto Test
> OK"; fi
> -
> -run-test-i386-fprem: test-i386-fprem
> -       ./test-i386-fprem > test-i386-fprem.ref
> -       -$(QEMU) test-i386-fprem > test-i386-fprem.out
> -       @if diff -u test-i386-fprem.ref test-i386-fprem.out ; then echo
> "Auto Test OK"; fi
> -
> -run-test-x86_64: test-x86_64
> -       ./test-x86_64 > test-x86_64.ref
> -       -$(QEMU_X86_64) test-x86_64 > test-x86_64.out
> -       @if diff -u test-x86_64.ref test-x86_64.out ; then echo "Auto Test
> OK"; fi
> -
> -run-test-mmap: test-mmap
> -       -$(QEMU) ./test-mmap
> -       -$(QEMU) -p 8192 ./test-mmap 8192
> -       -$(QEMU) -p 16384 ./test-mmap 16384
> -       -$(QEMU) -p 32768 ./test-mmap 32768
> -
> -run-runcom: runcom
> -       -$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com
> -
> -run-test_path: test_path
> -       ./test_path
> -
> -# rules to compile tests
> -
> -test_path: test_path.o
> -
> -test_path.o: test_path.c
> -
> -hello-i386: hello-i386.c
> -       $(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
> -       strip $@
> -
> -testthread: testthread.c
> -       $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lpthread
> -
> -# i386/x86_64 emulation test (test various opcodes) */
> -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_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ \
> -              $(<D)/test-i386.c $(<D)/test-i386-code16.S
> $(<D)/test-i386-vm86.S -lm
> -
> -test-i386-fprem: test-i386-fprem.c
> -       $(CC_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ $^
> -
> -test-x86_64: test-i386.c \
> -           test-i386.h test-i386-shift.h test-i386-muldiv.h
> -       $(CC_X86_64) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@
> $(<D)/test-i386.c -lm
> -
> -# generic Linux and CPU test
> -linux-test: linux-test.c
> -       $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lm
> -
> -# vm86 test
> -runcom: runcom.c
> -       $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
> -
> -test-mmap: test-mmap.c
> -       $(CC_I386) -m32 $(CFLAGS) -Wall -O2 $(LDFLAGS) -o $@ $<
> -
> -# speed test
> -sha1-i386: sha1.c
> -       $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
> -
> -sha1: sha1.c
> -       $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
> -
> -speed: sha1 sha1-i386
> -       time ./sha1
> -       time $(QEMU) ./sha1-i386
> -
> -# arm test
> -hello-arm: hello-arm.o
> -       arm-linux-ld -o $@ $<
> -
> -hello-arm.o: hello-arm.c
> -       arm-linux-gcc -Wall -g -O2 -c -o $@ $<
> -
> -test-arm-iwmmxt: test-arm-iwmmxt.s
> -       cpp < $< | arm-linux-gnu-gcc -Wall -static -march=iwmmxt
> -mabi=aapcs -x assembler - -o $@
> -
> -# MIPS test
> -hello-mips: hello-mips.c
> -       mips-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC
> -mabi=32 -Wall -Wextra -g -O2 -o $@ $<
> -
> -hello-mipsel: hello-mips.c
> -       mipsel-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC
> -mabi=32 -Wall -Wextra -g -O2 -o $@ $<
> -
> -# testsuite for the CRIS port.
> -test-cris:
> -       $(MAKE) -C cris check
> -
> -# testsuite for the LM32 port.
> -test-lm32:
> -       $(MAKE) -C lm32 check
> -
> -clean:
> -       rm -f *~ *.o test-i386.out test-i386.ref \
> -           test-x86_64.log test-x86_64.ref qruncom $(TESTS)
> diff --git a/tests/tcg/i386/Makefile b/tests/tcg/i386/Makefile
> new file mode 100644
> index 0000000..15f77af
> --- /dev/null
> +++ b/tests/tcg/i386/Makefile
> @@ -0,0 +1,88 @@
> +BUILD_DIR=../../../build/
>

Looks like you are hardcoding a custom path here.

There are many Makefile changes that I think you should split to help
review.

+SRC_PATH=../../../
> +include $(BUILD_DIR)/config-host.mak
> +include $(SRC_PATH)/rules.mak
> +
> +$(call set-vpath, $(SRC_PATH)/tests/tcg/i386)
> +
> +QEMU=$(BUILD_DIR)/i386-linux-user/qemu-i386
> +QEMU_X86_64=$(BUILD_DIR)/x86_64-linux-user/qemu-x86_64
> +CC_X86_64=$(CC_I386) -m64
> +
> +QEMU_INCLUDES += -I$(BUILD_DIR)
> +CFLAGS=-Wall -O2 -g -fno-strict-aliasing
> +#CFLAGS+=-msse2
> +LDFLAGS=
> +
> +# TODO: automatically detect ARM and MIPS compilers, and run those too
> +
>

Not relevant anymore


> +# runcom maps page 0, so it requires root privileges
> +# also, pi_10.com runs indefinitely
> +
>
+I386_TESTS=hello-i386 \
> +          test-i386 \
> +          test-i386-fprem
> +          # runcom
> +
> +# native i386 compilers sometimes are not biarch.  assume cross-compilers
> are
> +ifneq ($(ARCH),i386)
> +I386_TESTS+=run-test-x86_64
>

btw this is wrong, it should be test-x86_64, since run- is prepended later

+endif
> +
> +all: $(patsubst %,run-%,$(I386_TESTS))
> +test: all
> +
> +# rules to run tests
> +
> +.PHONY: $(patsubst %,run-%,$(I386_TESTS))
> +
> +run-%: %
> +       -$(QEMU) ./$*
> +
> +run-hello-i386: hello-i386
> +       $(QEMU) ./hello-i386
> +
> +run-test-i386: test-i386
> +       ./test-i386 > test-i386.ref
> +       -$(QEMU) test-i386 > test-i386.out
> +       @if cmp -s test-i386.ref test-i386.out ; then echo "Auto Test OK";
> fi
> +
> +run-test-i386-fprem: test-i386-fprem
> +       ./test-i386-fprem > test-i386-fprem.ref
> +       -$(QEMU_X86_64) test-i386-fprem > test-i386-fprem.out
> +       @if cmp -s test-i386-fprem.ref test-i386-fprem.out ; then echo
> "Auto Test OK"; fi
> +
> +run-test-x86_64: test-x86_64
> +       ./test-x86_64 > test-x86_64.ref
> +       -$(QEMU_X86_64) test-x86_64 > test-x86_64.out
> +       @if diff -u test-x86_64.ref test-x86_64.out ; then echo "Auto Test
> OK"; fi
> +
> +run-runcom: runcom
> +       -$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com
> +
> +# rules to compile tests
> +
> +hello-i386: hello-i386.c
> +       $(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
> +       strip $@
> +
> +# i386/x86_64 emulation test (test various opcodes) */
> +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_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ \
> +              $(<D)/test-i386.c $(<D)/test-i386-code16.S
> $(<D)/test-i386-vm86.S -lm
> +
> +test-i386-fprem: test-i386-fprem.c
> +       $(CC) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ $^ `pkg-config
> --cflags --libs glib-2.0`
> +
> +test-x86_64: test-i386.c \
> +           test-i386.h test-i386-shift.h test-i386-muldiv.h
> +       $(CC_X86_64) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@
> $(<D)/test-i386.c -lm
> +
> +# vm86 test
> +runcom: runcom.c
> +       $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
> +
> +clean:
> +       rm -f *~ *.o test-i386.out test-i386.ref test-i386-fprem.out
> test-i386-fprem.ref \
> +           test-x86_64.log test-x86_64.ref qruncom $(I386_TESTS)
> diff --git a/tests/tcg/hello-i386.c b/tests/tcg/i386/hello-i386.c
> similarity index 71%
> rename from tests/tcg/hello-i386.c
> rename to tests/tcg/i386/hello-i386.c
> index fa00380..ab55922 100644
> --- a/tests/tcg/hello-i386.c
> +++ b/tests/tcg/i386/hello-i386.c
> @@ -1,6 +1,7 @@
>  #include <asm/unistd.h>
> +#include <stddef.h>
>
> -static inline void exit(int status)
> +static inline void _exit(int status)
>  {
>    int __res;
>    __asm__ volatile ("movl %%ecx,%%ebx\n"\
> @@ -8,7 +9,7 @@ static inline void exit(int status)
>                     :  "=a" (__res) : "0" (__NR_exit),"c"
> ((long)(status)));
>  }
>
> -static inline int write(int fd, const char * buf, int len)
> +static inline size_t _write(int fd, const void * buf, size_t len)
>  {
>    int status;
>    __asm__ volatile ("pushl %%ebx\n"\
> @@ -22,6 +23,6 @@ static inline int write(int fd, const char * buf, int
> len)
>
>  void _start(void)
>  {
> -    write(1, "Hello World\n", 12);
> -    exit(0);
> +    _write(1, "Hello World\n", 12);
> +    _exit(0);
>  }
>

This could be a seperate patch


> 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.9.3
>
>
> --
Marc-André Lureau


reply via email to

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