[announce] QEMU x86 emulator version 0.1

Fabrice Bellard fabrice.bellard at free.fr
Mon Mar 24 17:26:54 CST 2003


Ulrich Weigand wrote:
> Hi Fabrice,
> 
> 
>>The first release of the QEMU x86 emulator is available at 
>>http://bellard.org/qemu/. QEMU achieves a fast user space Linux x86 
>>emulation on x86 and PowerPC Linux hosts by using dynamic translation. 
>>Its main goal is to be able to run the Wine project on non-x86 
>>architectures.
> 
> 
> Using gcc to generate code snippets is a *great* idea!
> This makes it really easy to port; I've already got it 
> running on s390 ...
> 
> A couple of minor observations:
> 
> - What do you need the linker scripts for?  Is it only to choose
>   a non-standard offset?  If so, I guess it would be less error-
>   prone to use the currently installed scripts ('ld --verbose')
>   and just change the offset using sed or so ...

Yes, it is just to change the binary base address. My futur plan is to 
build an "executable shared library" like ld.so and to relocate it 
dynamically as soon as I know where the ELF file wants to be mapped.

> - The test-i386 case gives differing results (even on i386)
>   for several sh[lr]dw cases and for sin(2.0) ...

For sh[lr]dw I discovered yesterday it is *really* CPU dependent as 
mentionned in the intel doc if the shift is >= 16 (I am using a K6). 
Strange for sin(2.0).

> - syscall.c would refuse to build due to prototype mismatch;
>   this patch fixes it:
> 
> diff -urN qemu-0.1/syscall.c qemu-0.1-s390/syscall.c
> --- qemu-0.1/syscall.c  2003-03-23 21:18:13.000000000 +0100
> +++ qemu-0.1-s390/syscall.c     2003-03-24 22:27:41.000000000 +0100
> @@ -103,10 +103,10 @@
>  extern int flock(int, int);
>  extern int setfsuid(int);
>  extern int setfsgid(int);
> -extern int setresuid(int,int,int);
> -extern int getresuid(int *,int *,int *);
> -extern int setresgid(int,int,int);
> -extern int getresgid(int *,int *,int *);
> +extern int setresuid(uid_t, uid_t, uid_t);
> +extern int getresuid(uid_t *, uid_t *, uid_t *);
> +extern int setresgid(gid_t, gid_t, gid_t);
> +extern int getresgid(gid_t *, gid_t *, gid_t *);
> 
>  static inline long get_errno(long ret)
>  {
> 

OK.

> B.t.w are shared libraries supposed to work already?

Yes. A new version is at http://bellard.org/qemu. I provided a binary 
install for glibc and wine. I tested /bin/ls succesfully on PowerPC with 
dynamic linking. On i386, wine works for some command line windows 
programms, but it terminates with a segfault...

Fabrice.




More information about the wine-devel mailing list