On Sat, Feb 6, 2010 at 8:49 AM, Stefan Weil <w...@mail.berlios.de> wrote: [...] > I tested two different hosts with x86_64-linux-user: > > * 32 bit Intel (i386) - does not work with your patch
For me x86_64 on i386 has always failed without even calling vsyscall :-) > * 64 bit AMD (x86_64) - works with your patch > > Your patch improves the emulation for 64 bit hosts. > Nevertheless, it has some open points: > > * target-i386 code should not have to know about > linux vsyscall Given that we have to workaround 64-bit virtual address limitations (cf. Richard mail and previous discussions on the list), doing otherwise looks difficult. > * there is no vsyscall page in memory, > but very special programs might expect to see one > (it is even worse: the target sees the memory page > of the host) > > * it is not possible to step into vsyscall code > using a debugger How would you achieve that? Your guest OS doesn't necessarily have the code mapped. I think this has to be considered as other syscalls, though slightly different. > My favorite solution would be a vsyscall page mapped > to the correct fixed address and filled with QEMU > generated specific code, for example code which calls the > normal syscalls to do the work. This would only > need modifications for linux-user code. You mean you'd explicitly put somewhere x86_64 code that simulates the behaviour of vsyscall? Laurent