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.