Hi Fabrice,
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.
Ah, I see.
- 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).
The sin(2.0) case is now fixed, strange indeed.
But I've got another miscompare, this time with bsfw: -bsfw A=12340128 R=12340003 0 +bsfw A=12340128 R=00000003 0
However, this appears to be a test case bug: #define TEST_BSX(op, size, op0)\ {\ int res, val, resz;\ val = op0;\ asm("xorl %1, %1 ; " #op " %" size "2, %" size "0 ; setz %b1" \ : "=r" (res), "=q" (resz)\ : "g" (val));\ printf("%-10s A=%08x R=%08x %d\n", #op, val, resz ? 0 : res, resz);\ }
Note that when using 16-bit operations, the "=r" (res) is actually invalid, because the assembler code will leave the upper 16-bit undefined. I'd suggest setting res to a defined value before the asm and using "+r" (res).
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...
Great; /bin/ls works on s390 as well!
Bye, Ulrich