Messages in this thread | | | Date | Sat, 21 Jan 2012 00:49:24 +0100 | Subject | Re: Compat 32-bit syscall entry from 64-bit task!? | From | "Indan Zupancic" <> |
| |
On Fri, January 20, 2012 23:41, H. Peter Anvin wrote: > On 01/20/2012 02:40 PM, Roland McGrath wrote: >> If you change the size of a regset, then the new full size will be the size >> of the core file notes. Existing userland tools will not be expecting >> this, they expect a known exact size. If you need to add new stuff, it >> really is easier all around to add a new regset flavor. When adding a new >> one, you can make it variable-sized from the start so as to be extensible >> in the future. We did this for NT_X86_XSTATE, for example. >> > > Yes, that definitely seems cleaner.
I would prefer Linus' way of just stuffing it into cs. Jamie also wanted a bit telling in what mode the userspace is running. That's 3 bits in total, with one bit telling whether the other bits are valid or not. Anything else? Maybe a bit telling whether it is syscall entry or exit?
As all this is very x86_64 specific and cs is already used to figure out the mode, it seems overkill to add a new regset just for this.
It's a lot easier for existing code to add an extra cs check than to use different register sets and different ptrace commands. Considering that PTRACE_GETREGSET is undocumented it's likely that existing code isn't using it much.
Greetings,
Indan
| |