This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [rfa] Handle amd64-linux %orig_rax
On Tue, Oct 31, 2006 at 07:40:38PM +0100, Andi Kleen wrote:
> On Tuesday 31 October 2006 19:22, Daniel Jacobowitz wrote:
> > Andi, have you got any opinion on this? The problem arises when GDB
> > sets %orig_rax to -1 to indicate that the interrupted syscall should
> > not be resumed, and then sets %rip to some other address; the kernel is
> > still changing %rcx on the way out to userspace. I think this sounds
> > like a kernel bug.
>
> You would need to complain to the x86 ISA designers.
>
> SYSRET requires us to trash %rcx, there is no other way to use it.
> This means IRET won't clobber any registers (and it is used in a few
> situations where this is critical), but it is significantly slower.
Oh dear. So if we set registers on the syscall exit path, the
kernel/ISA may just eat them. And we have no reliable way to know
whether we're stopped on the syscall exit path. There's gotta be a
better way, but I don't know what it might be...
--
Daniel Jacobowitz
CodeSourcery