Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)

2005-05-06 Thread Juergen Keil


 I have retested on sparc (sol9), by adding some of the
 defines in fenv.h for Solaris 10 to the gnu-c99-math.h 
 file you created, and the patches you posted, and now 
 I'm getting an error when I  compile that looks like this:
 
 for d in i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu; do \
 gmake -C $d all || exit 1 ; \
 done
 gmake[1]: Entering directory 
`/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
 ../dyngen -c -o opc.h op.o
 dyngen: ret; restore; not found at end of op_fstt_ST0_A0
 gmake[1]: *** [opc.h] Error 1
 gmake[1]: Leaving directory 
`/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
 gmake: *** [all] Error 1
 
 Ideas?


Which compiler was used?

Disassemble the op_fstt_ST0_A0 function, using dis -F op_fstt_ST0_A0 op.o.

My S10 sparc binary for op.o currently includes:

% dis -F op_fstt_ST0_A0 i386-softmmu/op.o
   DISASSEMBLER  


disassembly for i386-softmmu/op.o

section .text
op_fstt_ST0_A0()
op_fstt_ST0_A0: 9d e3 bf 90  save %sp, -0x70, %sp
op_fstt_ST0_A0+0x4: 40 00 00 00  call op_fstt_ST0_A0+0x4
op_fstt_ST0_A0+0x8: 01 00 00 00  nop  
op_fstt_ST0_A0+0xc: 01 00 00 00  nop  
op_fstt_ST0_A0+0x10:81 c7 e0 08  ret  
op_fstt_ST0_A0+0x14:81 e8 00 00  restore  


I've seen cases where gcc 3.4.x has compiled the op.o code templates into
leaf functions, and these are incompatible with dyngen.  I think
some extra gnu cc CFLAGS for op.c (-fno-omit-frame-pointer) fix this problem.



___
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel


Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)

2005-05-06 Thread Ben Taylor
Juergen Keil [EMAIL PROTECTED] wrote:
 
 
  I have retested on sparc (sol9), by adding some of the
  defines in fenv.h for Solaris 10 to the gnu-c99-math.h 
  file you created, and the patches you posted, and now 
  I'm getting an error when I  compile that looks like this:
  
  for d in i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu; do \
  gmake -C $d all || exit 1 ; \
  done
  gmake[1]: Entering directory 
 `/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
  ../dyngen -c -o opc.h op.o
  dyngen: ret; restore; not found at end of op_fstt_ST0_A0
  gmake[1]: *** [opc.h] Error 1
  gmake[1]: Leaving directory 
 `/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
  gmake: *** [all] Error 1
  
  Ideas?
 
 
 Which compiler was used?

blastwave's gcc-3.4.3

 
 Disassemble the op_fstt_ST0_A0 function, using dis -F op_fstt_ST0_A0 op.o.
 
 My S10 sparc binary for op.o currently includes:
 
 % dis -F op_fstt_ST0_A0 i386-softmmu/op.o
    DISASSEMBLER  
 
 
 disassembly for i386-softmmu/op.o
 
 section .text
 op_fstt_ST0_A0()
 op_fstt_ST0_A0: 9d e3 bf 90  save %sp, -0x70, %sp
 op_fstt_ST0_A0+0x4: 40 00 00 00  call op_fstt_ST0_A0+0x4
 op_fstt_ST0_A0+0x8: 01 00 00 00  nop  
 op_fstt_ST0_A0+0xc: 01 00 00 00  nop  
 op_fstt_ST0_A0+0x10:81 c7 e0 08  ret  
 op_fstt_ST0_A0+0x14:81 e8 00 00  restore  

dis -F op_fstt_ST0_A0 i386-softmmu/op.o
   DISASSEMBLER  


disassembly for i386-softmmu/op.o

section .text
op_fstt_ST0_A0()
cfe4:  9d e3 bf 90 save %sp, -0x70, %sp
cfe8:  40 00 00 00 call 0xcfe8
cfec:  81 e8 00 00 restore  
cff0:  01 00 00 00 nop  

interesting.

 I've seen cases where gcc 3.4.x has compiled the op.o code templates into
 leaf functions, and these are incompatible with dyngen.  I think
 some extra gnu cc CFLAGS for op.c (-fno-omit-frame-pointer) fix this problem.

added those with no effect.  Do we need gas to do
this correctly? Blastwave's gcc uses sun's as and ld.

Ben




___
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel


Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)

2005-05-06 Thread Ben Taylor
Juergen Keil [EMAIL PROTECTED]
 
 
 
  I have retested on sparc (sol9), by adding some of the
  defines in fenv.h for Solaris 10 to the gnu-c99-math.h 
  file you created, and the patches you posted, and now 
  I'm getting an error when I  compile that looks like this:
  
  for d in i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu; do \
  gmake -C $d all || exit 1 ; \
  done
  gmake[1]: Entering directory 
 `/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
  ../dyngen -c -o opc.h op.o
  dyngen: ret; restore; not found at end of op_fstt_ST0_A0
  gmake[1]: *** [opc.h] Error 1
  gmake[1]: Leaving directory 
 `/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
  gmake: *** [all] Error 1
  
  Ideas?
 
 
 Which compiler was used?
 
 Disassemble the op_fstt_ST0_A0 function, using dis -F op_fstt_ST0_A0 op.o.
 
 My S10 sparc binary for op.o currently includes:
 
 % dis -F op_fstt_ST0_A0 i386-softmmu/op.o
    DISASSEMBLER  
 
 
 disassembly for i386-softmmu/op.o
 
 section .text
 op_fstt_ST0_A0()
 op_fstt_ST0_A0: 9d e3 bf 90  save %sp, -0x70, %sp
 op_fstt_ST0_A0+0x4: 40 00 00 00  call op_fstt_ST0_A0+0x4
 op_fstt_ST0_A0+0x8: 01 00 00 00  nop  
 op_fstt_ST0_A0+0xc: 01 00 00 00  nop  
 op_fstt_ST0_A0+0x10:81 c7 e0 08  ret  
 op_fstt_ST0_A0+0x14:81 e8 00 00  restore  
 
 
 I've seen cases where gcc 3.4.x has compiled the op.o code templates into
 leaf functions, and these are incompatible with dyngen.  I think
 some extra gnu cc CFLAGS for op.c (-fno-omit-frame-pointer) fix this problem.

Mea culpa.  It looks like I broke something (or managed
to get a non-gcc3 compiler in my path at configure time)
that allowed HAVE_GCC3_OPTIONS to not be set.  When
I added the flag back in to config-host.mak, the compile
went the way it should have. 

At least I know what to look for now.

Thanks,

Ben



___
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel


Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)

2005-05-02 Thread Juergen Keil


 This is in fenv.h, and so are all the other macros
 that are left undefined.  Not sure how we fix this,
 other than pick up some of these defines manually.

Use ieeefp.h [fpsetround(), fpgetround()] on Solaris, instead of fenv.h
[fegetround(), fesetround()] ?


One of the BSDs already does this (see fpu/softfloat-native.h):

#if defined(_BSD)  !defined(__APPLE__)
#include ieeefp.h
#else
#include fenv.h
#endif

...



___
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel