On Tuesday 31 October 2006 20:20, Neo Jia wrote: > Paul, > > I just checkout from CVS repository and encountered the following problem > while building the code. > > It seems you eleminate your original arguments of function gen_op_divs and > gen_op_divu. > > Could you take a look? > > gcc -Wall -O2 -g -fno-strict-aliasing -I. -I.. > -I/home/cjia/research/Operating_Systems/qemu_cvs/target-m68k > -I/home/cjia/research/Operating_Systems/qemu_cvs > -I/home/cjia/research/Operating_Systems/qemu_cvs/linux-user > -I/home/cjia/research/Operating_Systems/qemu_cvs/linux-user/m68k > -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE > -I/home/cjia/research/Operating_Systems/qemu_cvs/fpu > -I/home/cjia/research/Operating_Systems/qemu_cvs/slirp -c -o > translate.o/home/cjia/research/Operating_Systems/qemu_cvs/target-m68k/trans >late.c > /home/cjia/research/Operating_Systems/qemu_cvs/target-m68k/translate.c: In > function `disas_divw':
Ah, this is a dyngen bug. op_divw contains "if (PARAM1) {...}". PARAM1 is implemented by taking the address of a symbol. gcc knows that symbols can never have address zero (because the C standard says so), and eliminates the whole block of code. The patch below fixes it (weak symbols can be zero). However it break lame hosts that don't support weak symbols, eg. win32. I'm still trying to figure out a proper solution. Index: dyngen-exec.h =================================================================== RCS file: /sources/qemu/qemu/dyngen-exec.h,v retrieving revision 1.29 diff -u -p -r1.29 dyngen-exec.h --- dyngen-exec.h 18 Jul 2006 21:23:34 -0000 1.29 +++ dyngen-exec.h 31 Oct 2006 16:53:38 -0000 @@ -222,7 +222,7 @@ extern int __op_param3 __hidden; #if defined(__APPLE__) static int __op_param1, __op_param2, __op_param3; #else -extern int __op_param1, __op_param2, __op_param3; +extern int __attribute__((weak)) __op_param1, __op_param2, __op_param3; #endif #define PARAM1 ((long)(&__op_param1)) #define PARAM2 ((long)(&__op_param2)) _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel