In October last year I reported a problem compiling qemu-sparc on FC3 x86_64, for which a fix was then found. Trying to recompile the latest CVS version on FC4 x86_64 (with compat-gcc-32), I find that the code in dyngen.c has been overhauled, but that compilation fails at:
make[1]: Entering directory `/home/bob/cvs/qemu/sparc-user' gcc32 -Wall -O2 -g -fno-strict-aliasing -I. -I/home/bob/cvs/qemu/target-sparc -I/home/bob/cvs/qemu -I/home/bob/cvs/qemu/linux-user -I/home/bob/cvs/qemu/linux-user/sparc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/bob/cvs/qemu/fpu -I/home/bob/cvs/qemu/slirp -c -o translate-op.o /home/bob/cvs/qemu/translate-op.c In file included from /home/bob/cvs/qemu/translate-op.c:36: op.h: In function `dyngen_code': op.h:4631: syntax error before '.' token op.h:4633: syntax error before '.' token make[1]: *** [translate-op.o] Error 1 The code from op.h: case INDEX_op_fnegs: { extern void op_fnegs(); extern char .LC96; memcpy(gen_code_ptr, (void *)((char *)&op_fnegs+0), 31); *(uint32_t *)(gen_code_ptr + 10) = (long)(&.LC96) - (long)(gen_code_ptr + 10) + -4; gen_code_ptr += 31; } break; Unfortunately this time, looking at the relevant section in dyngen.c, I find at line 1593: #if defined(HOST_SPARC) if (sym_name[0] == '.') { fprintf(outfile, "extern char __dot_%s __asm__(\"%s\");\n", sym_name+1, sym_name); continue; } #endif Extending this to #if defined(HOST_SPARC) || defined(HOST_X86_64) produces another error, and none of my attempts to fix this seems to work. It looks like a working symbol generation in dyngen.c was replaced by code which regresses to incorrect behavior on x86_64. Can anyone with more experience please suggest a fix? Sincerely, Bob Deblier _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel