On 02/16/2012 01:51 PM, Will Drewry wrote:
quoted
Put the bloody bit in there and let the pattern program make that decision.
Easy enough to add a bit for the mode: 32-bit or 64-bit. It seemed
like a waste of cycles for every 32-bit program or every 64-bit
program to check to see that its calling convention hadn't changed,
but it does take away a valid decision the pattern program should be
making.
I'll add a flag for 32bit/64bit while cleaning up seccomp_data. I
think that will properly encapsulate the is_compat_task() behavior in
a way that is stable for compat and non-compat tasks to use. If
there's a more obvious way, I'm all ears.
is_compat_task() is not going to be the right thing for x86 going
forward, as we're introducing the x32 ABI (which uses the normal x86-64
entry point, but with different eax numbers, and bit 30 set.)
The actual state is the TS_COMPAT flag in the thread_info structure,
which currently matches is_compat_task(), but perhaps we should add a
new helper function syscall_namespace() or something like that...
Either that or we can just use another bit in the syscall number field...
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.