[Top][All Lists]

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

[Qemu-devel] Regression compiling sparc-user on x86_64 host

From: Bob Deblier
Subject: [Qemu-devel] Regression compiling sparc-user on x86_64 host
Date: Sat, 25 Jun 2005 14:50:45 +0200

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
-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;

Unfortunately this time, looking at the relevant section in dyngen.c, I
find at line 1593:

#if defined(HOST_SPARC)
            if (sym_name[0] == '.') {
                "extern char __dot_%s __asm__(\"%s\");\n",
                sym_name+1, sym_name);

Extending this to #if defined(HOST_SPARC) || defined(HOST_X86_64)
produces another error, and none of my attempts to fix this seems to

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?


Bob Deblier

reply via email to

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