qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] sparc-user build error
@ 2004-10-10 17:04 Magnus Damm
  2004-10-10 17:47 ` Fabrice Bellard
  2004-10-10 17:50 ` Johannes Schindelin
  0 siblings, 2 replies; 4+ messages in thread
From: Magnus Damm @ 2004-10-10 17:04 UTC (permalink / raw)
  To: qemu-devel

Hello,

I'm unable to build sparc-user on my powerpc box. I use gcc-3.4.1 from
Gentoo stable ppc, and I'm building the CVS version of QEMU.

make[1]: Entering directory
`/home/damm/build/qemu/cvs/src/qemu/sparc-user'
gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
-I/home/damm/build/qemu/cvs/src/qemu/target-sparc
-I/home/damm/build/qemu/cvs/src/qemu
-I/home/damm/build/qemu/cvs/src/qemu/linux-user
-I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o exec.o
/home/damm/build/qemu/cvs/src/qemu/exec.c
gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
-I/home/damm/build/qemu/cvs/src/qemu/target-sparc
-I/home/damm/build/qemu/cvs/src/qemu
-I/home/damm/build/qemu/cvs/src/qemu/linux-user
-I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o translate-all.o
/home/damm/build/qemu/cvs/src/qemu/translate-all.c
In file included from
/home/damm/build/qemu/cvs/src/qemu/translate-all.c:41:
./op.h: In function `dyngen_code':
./op.h:4783: error: parse error before ')' token
./op.h:4784: error: parse error before ')' token
./op.h:4799: error: parse error before ')' token
./op.h:4800: error: parse error before ')' token
make[1]: *** [translate-all.o] Error 1

It seems to me that "op_fitos" and "op_fitod" in "target-sparc/op.c"
gets converted to wierd code in "sparc-user/op.h" by dyngen:

op.c:

void OPPROTO op_fitos(void)
{
    FT0 = (float) *((int32_t *)&FT1);
}

op.h:

case INDEX_op_fitos: {
    extern void op_fitos();
    memcpy(gen_code_ptr, (void *)((char *)&op_fitos+0), 56);
    *(uint16_t *)(gen_code_ptr + 18) = ((long)(&) + 0 + 0x8000) >> 16;
    *(uint16_t *)(gen_code_ptr + 26) = ((long)(&) + 0);
    gen_code_ptr += 56;
}
break;

The same goes for "op_fitod". Look at the "(long)(&)", any ideas?

/ magnus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] sparc-user build error
  2004-10-10 17:04 [Qemu-devel] sparc-user build error Magnus Damm
@ 2004-10-10 17:47 ` Fabrice Bellard
  2004-10-10 18:35   ` Magnus Damm
  2004-10-10 17:50 ` Johannes Schindelin
  1 sibling, 1 reply; 4+ messages in thread
From: Fabrice Bellard @ 2004-10-10 17:47 UTC (permalink / raw)
  To: qemu-devel

It should work now.

Fabrice.

Magnus Damm wrote:
> Hello,
> 
> I'm unable to build sparc-user on my powerpc box. I use gcc-3.4.1 from
> Gentoo stable ppc, and I'm building the CVS version of QEMU.
> 
> make[1]: Entering directory
> `/home/damm/build/qemu/cvs/src/qemu/sparc-user'
> gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
> -I/home/damm/build/qemu/cvs/src/qemu/target-sparc
> -I/home/damm/build/qemu/cvs/src/qemu
> -I/home/damm/build/qemu/cvs/src/qemu/linux-user
> -I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
> -I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o exec.o
> /home/damm/build/qemu/cvs/src/qemu/exec.c
> gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
> -I/home/damm/build/qemu/cvs/src/qemu/target-sparc
> -I/home/damm/build/qemu/cvs/src/qemu
> -I/home/damm/build/qemu/cvs/src/qemu/linux-user
> -I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
> -I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o translate-all.o
> /home/damm/build/qemu/cvs/src/qemu/translate-all.c
> In file included from
> /home/damm/build/qemu/cvs/src/qemu/translate-all.c:41:
> ./op.h: In function `dyngen_code':
> ./op.h:4783: error: parse error before ')' token
> ./op.h:4784: error: parse error before ')' token
> ./op.h:4799: error: parse error before ')' token
> ./op.h:4800: error: parse error before ')' token
> make[1]: *** [translate-all.o] Error 1
> 
> It seems to me that "op_fitos" and "op_fitod" in "target-sparc/op.c"
> gets converted to wierd code in "sparc-user/op.h" by dyngen:
> 
> op.c:
> 
> void OPPROTO op_fitos(void)
> {
>     FT0 = (float) *((int32_t *)&FT1);
> }
> 
> op.h:
> 
> case INDEX_op_fitos: {
>     extern void op_fitos();
>     memcpy(gen_code_ptr, (void *)((char *)&op_fitos+0), 56);
>     *(uint16_t *)(gen_code_ptr + 18) = ((long)(&) + 0 + 0x8000) >> 16;
>     *(uint16_t *)(gen_code_ptr + 26) = ((long)(&) + 0);
>     gen_code_ptr += 56;
> }
> break;
> 
> The same goes for "op_fitod". Look at the "(long)(&)", any ideas?
> 
> / magnus
> 
> 
> 
> _______________________________________________
> Qemu-devel mailing list
> Qemu-devel@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/qemu-devel
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] sparc-user build error
  2004-10-10 17:04 [Qemu-devel] sparc-user build error Magnus Damm
  2004-10-10 17:47 ` Fabrice Bellard
@ 2004-10-10 17:50 ` Johannes Schindelin
  1 sibling, 0 replies; 4+ messages in thread
From: Johannes Schindelin @ 2004-10-10 17:50 UTC (permalink / raw)
  To: qemu-devel

Hi,

On Sun, 10 Oct 2004, Magnus Damm wrote:

> I'm unable to build sparc-user on my powerpc box. I use gcc-3.4.1 from
> Gentoo stable ppc, and I'm building the CVS version of QEMU.
>
> [...]
>
> op.h:
>
> case INDEX_op_fitos: {
>     extern void op_fitos();
>     memcpy(gen_code_ptr, (void *)((char *)&op_fitos+0), 56);
>     *(uint16_t *)(gen_code_ptr + 18) = ((long)(&) + 0 + 0x8000) >> 16;
>     *(uint16_t *)(gen_code_ptr + 26) = ((long)(&) + 0);
>     gen_code_ptr += 56;
> }
> break;
>
> The same goes for "op_fitod". Look at the "(long)(&)", any ideas?

It's a similar problem to

http://lists.gnu.org/archive/html/qemu-devel/2004-10/msg00092.html

You are building on i386, right? Then try to add the lines

                    if (strstart(sym_name, "__op_param", &p)) {
                        snprintf(name, sizeof(name), "param%s", p);
+                   } else if(sym_name[0]==0) {
+                       continue;
                    } else {
                        snprintf(name, sizeof(name), "(long)(&%s)",
sym_name);
                    }

in dyngen.c at line 1643 (the two lines to be added are the ones with a
'+' at the left).

A bone for general discussion: How many reasons can you think of to patch
relocations other than "__op_param*" and "__op_jump*"?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] sparc-user build error
  2004-10-10 17:47 ` Fabrice Bellard
@ 2004-10-10 18:35   ` Magnus Damm
  0 siblings, 0 replies; 4+ messages in thread
From: Magnus Damm @ 2004-10-10 18:35 UTC (permalink / raw)
  To: qemu-devel

Much better, thanks!

/ magnus

On Sun, 2004-10-10 at 19:47, Fabrice Bellard wrote:
> It should work now.
> 
> Fabrice.
> 
> Magnus Damm wrote:
> > Hello,
> > 
> > I'm unable to build sparc-user on my powerpc box. I use gcc-3.4.1 from
> > Gentoo stable ppc, and I'm building the CVS version of QEMU.
> > 
> > make[1]: Entering directory
> > `/home/damm/build/qemu/cvs/src/qemu/sparc-user'
> > gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
> > -I/home/damm/build/qemu/cvs/src/qemu/target-sparc
> > -I/home/damm/build/qemu/cvs/src/qemu
> > -I/home/damm/build/qemu/cvs/src/qemu/linux-user
> > -I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
> > -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
> > -I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o exec.o
> > /home/damm/build/qemu/cvs/src/qemu/exec.c
> > gcc -Wall -O2 -g -fno-strict-aliasing -D__powerpc__ -I.
> > -I/home/damm/build/qemu/cvs/src/qemu/target-sparc
> > -I/home/damm/build/qemu/cvs/src/qemu
> > -I/home/damm/build/qemu/cvs/src/qemu/linux-user
> > -I/home/damm/build/qemu/cvs/src/qemu/linux-user/sparc -D_GNU_SOURCE
> > -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
> > -I/home/damm/build/qemu/cvs/src/qemu/slirp -c -o translate-all.o
> > /home/damm/build/qemu/cvs/src/qemu/translate-all.c
> > In file included from
> > /home/damm/build/qemu/cvs/src/qemu/translate-all.c:41:
> > ./op.h: In function `dyngen_code':
> > ./op.h:4783: error: parse error before ')' token
> > ./op.h:4784: error: parse error before ')' token
> > ./op.h:4799: error: parse error before ')' token
> > ./op.h:4800: error: parse error before ')' token
> > make[1]: *** [translate-all.o] Error 1
> > 
> > It seems to me that "op_fitos" and "op_fitod" in "target-sparc/op.c"
> > gets converted to wierd code in "sparc-user/op.h" by dyngen:
> > 
> > op.c:
> > 
> > void OPPROTO op_fitos(void)
> > {
> >     FT0 = (float) *((int32_t *)&FT1);
> > }
> > 
> > op.h:
> > 
> > case INDEX_op_fitos: {
> >     extern void op_fitos();
> >     memcpy(gen_code_ptr, (void *)((char *)&op_fitos+0), 56);
> >     *(uint16_t *)(gen_code_ptr + 18) = ((long)(&) + 0 + 0x8000) >> 16;
> >     *(uint16_t *)(gen_code_ptr + 26) = ((long)(&) + 0);
> >     gen_code_ptr += 56;
> > }
> > break;
> > 
> > The same goes for "op_fitod". Look at the "(long)(&)", any ideas?
> > 
> > / magnus
> > 
> > 
> > 
> > _______________________________________________
> > Qemu-devel mailing list
> > Qemu-devel@nongnu.org
> > http://lists.nongnu.org/mailman/listinfo/qemu-devel
> > 
> > 
> 
> 
> 
> 
> _______________________________________________
> Qemu-devel mailing list
> Qemu-devel@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/qemu-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-10-10 18:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-10 17:04 [Qemu-devel] sparc-user build error Magnus Damm
2004-10-10 17:47 ` Fabrice Bellard
2004-10-10 18:35   ` Magnus Damm
2004-10-10 17:50 ` Johannes Schindelin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).