Message ID | 1350370438-32610-1-git-send-email-catalinp@google.com |
---|---|
State | New |
Headers | show |
On 16 October 2012 07:53, Catalin Patulea <catalinp@google.com> wrote: > Sorry this got abandoned.. here is a fresh (and slightly leaner) patch on top of master. Can anyone take a look? > > --- > This broke when the tests were moved from tests/ to tests/tcg/. > > On x86_64 host/i386-linux-user non-kvm guest, test-i386 and test-mmap are broken, but at least they build. > > To build/run the tests: > $ cd $BUILD_PATH/tests/tcg > $ SRC_PATH=path/to/qemu make <target> > @@ -86,7 +90,7 @@ testthread: testthread.c > # 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) $(CFLAGS) $(LDFLAGS) -o $@ \ > + $(CC_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ \ > $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm The compile line for the test-x86_64 target also needs QEMU_INCLUDES added to it. I can't work out how to get a working i386 compiler on my 64-bit Ubuntu system but I think that's an Ubuntu issue :-) Tests run ok on a 32 bit native box (there are some failures, as you say, but I'm unsurprised given how long it's been since we ran them last.) -- PMM
On Tue, Oct 16, 2012 at 8:50 AM, Peter Maydell <peter.maydell@linaro.org> wrote: > The compile line for the test-x86_64 target also needs > QEMU_INCLUDES added to it. Done. > I can't work out how to get a working i386 compiler on my 64-bit Ubuntu system > but I think that's an Ubuntu issue :-) Tests run ok on a 32 bit native box > (there are some failures, as you say, but I'm unsurprised given how long it's > been since we ran them last.) I'm running x86_64 precise with CC_I386="gcc -m32" (autodetected by configure) - does that not work for you? Is there anything wrong with building 32-bit binaries this way?
On 16 October 2012 19:09, Catalin Patulea <catalinp@google.com> wrote: > On Tue, Oct 16, 2012 at 8:50 AM, Peter Maydell <peter.maydell@linaro.org> wrote: >> I can't work out how to get a working i386 compiler on my 64-bit Ubuntu system >> but I think that's an Ubuntu issue :-) Tests run ok on a 32 bit native box >> (there are some failures, as you say, but I'm unsurprised given how long it's >> been since we ran them last.) > I'm running x86_64 precise with CC_I386="gcc -m32" (autodetected by > configure) - does that not work for you? Is there anything wrong with > building 32-bit binaries this way? I think that should work but my setup is broken somehow: it can't find the 32 bit libgcc (and in passing finds and discards the 64 bit version): cam-vm-266:precise:tcg$ make linux-test ccache gcc -m32 -Wall -O2 -g -fno-strict-aliasing -o linux-test linux-test.c -lm /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc.a when searching for -lgcc /usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s collect2: ld returned 1 exit status make: *** [linux-test] Error 1 I have a feeling that precise's mostly-working multiarch support may be the issue... -- PMM
On Tue, Oct 16, 2012 at 2:47 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > I have a feeling that precise's mostly-working multiarch support > may be the issue... Seems I've got libgcc1:i386 and lib32gcc1 which provide libgcc_s.so* in various forms. Not entirely sure what the 'right' setup is.
diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index 15e36a2..9ff47b8 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -1,13 +1,13 @@ --include ../config-host.mak +-include ../../config-host.mak -include $(SRC_PATH)/rules.mak -$(call set-vpath, $(SRC_PATH)/tests) +$(call set-vpath, $(SRC_PATH)/tests/tcg) -QEMU=../i386-linux-user/qemu-i386 -QEMU_X86_64=../x86_64-linux-user/qemu-x86_64 +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.. +QEMU_INCLUDES += -I../.. CFLAGS=-Wall -O2 -g -fno-strict-aliasing #CFLAGS+=-msse2 LDFLAGS= @@ -36,6 +36,7 @@ TESTS += $(I386_TESTS) endif all: $(patsubst %,run-%,$(TESTS)) +test: all # rules to run tests @@ -74,7 +75,10 @@ run-test_path: test_path # rules to compile tests test_path: test_path.o + $(CC_I386) $(LDFLAGS) -o $@ $^ $(LIBS) + test_path.o: test_path.c + $(CC_I386) $(QEMU_INCLUDES) $(GLIB_CFLAGS) $(CFLAGS) -c -o $@ $^ hello-i386: hello-i386.c $(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $< @@ -86,7 +90,7 @@ testthread: testthread.c # 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) $(CFLAGS) $(LDFLAGS) -o $@ \ + $(CC_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ \ $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm test-x86_64: test-i386.c \ diff --git a/tests/tcg/linux-test.c b/tests/tcg/linux-test.c index 2e4a746..83cb32d 100644 --- a/tests/tcg/linux-test.c +++ b/tests/tcg/linux-test.c @@ -16,6 +16,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, see <http://www.gnu.org/licenses/>. */ +#define _GNU_SOURCE #include <stdarg.h> #include <stdlib.h> #include <stdio.h> @@ -38,6 +39,7 @@ #include <dirent.h> #include <setjmp.h> #include <sys/shm.h> +#include <sched.h> #define TESTPATH "/tmp/linux-test.tmp" #define TESTPORT 7654 diff --git a/tests/tcg/test-i386.c b/tests/tcg/test-i386.c index 8e64bba..64d929e 100644 --- a/tests/tcg/test-i386.c +++ b/tests/tcg/test-i386.c @@ -17,6 +17,7 @@ * along with this program; if not, see <http://www.gnu.org/licenses/>. */ #define _GNU_SOURCE +#include "compiler.h" #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -1827,7 +1828,7 @@ void test_exceptions(void) printf("lock nop exception:\n"); if (setjmp(jmp_env) == 0) { /* now execute an invalid instruction */ - asm volatile("lock nop"); + asm volatile(".byte 0xf0, 0x90"); /* lock nop */ } printf("INT exception:\n"); diff --git a/tests/tcg/test_path.c b/tests/tcg/test_path.c index 7265a94..a064eea 100644 --- a/tests/tcg/test_path.c +++ b/tests/tcg/test_path.c @@ -1,11 +1,12 @@ /* Test path override code */ -#include "../config-host.h" -#include "../qemu-malloc.c" -#include "../cutils.c" -#include "../path.c" -#include "../trace.c" +#define _GNU_SOURCE +#include "config-host.h" +#include "iov.c" +#include "cutils.c" +#include "path.c" +#include "trace.c" #ifdef CONFIG_TRACE_SIMPLE -#include "../simpletrace.c" +#include "../trace/simple.c" #endif #include <stdarg.h>