[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] User mode: Handle x86_64 vsyscall
From: |
Laurent Desnogues |
Subject: |
Re: [Qemu-devel] [PATCH] User mode: Handle x86_64 vsyscall |
Date: |
Sun, 7 Feb 2010 00:50:38 +0100 |
On Sat, Feb 6, 2010 at 8:49 AM, Stefan Weil <address@hidden> 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
Re: [Qemu-devel] [PATCH] User mode: Handle x86_64 vsyscall, Richard Henderson, 2010/02/06