Message ID | 20160917140349.12431-2-bobby.prani@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi On Sat, Sep 17, 2016 at 6:05 PM Pranith Kumar <bobby.prani@gmail.com> wrote: > Signed-off-by: Pranith Kumar <bobby.prani@gmail.com> > --- > 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
Marc-André Lureau writes: >> 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. Missed this one. Will fix it up. > > There are many Makefile changes that I think you should split to help > review. OK, I will do that. I did not think it was worth splitting it up since I was being lazy, but yes, it will help make the review easier I guess. > > +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 Noted. > > >> +# 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 > Will fix. >> --- 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 > OK, will do.
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/ +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 + +# 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 +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); } 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
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com> --- 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 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%)