summaryrefslogtreecommitdiffstats
path: root/sandbox/wow_helper
diff options
context:
space:
mode:
authormarkus@chromium.org <markus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-28 01:54:09 +0000
committermarkus@chromium.org <markus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-28 01:54:09 +0000
commit745cf67ad12fc84d7c96ecf5c4e571717bbde176 (patch)
treed7267cd546f4985568810da3f828c9b9e07dee54 /sandbox/wow_helper
parent92b16aa35c651c1077a4738a348275ef10327b3c (diff)
downloadchromium_src-745cf67ad12fc84d7c96ecf5c4e571717bbde176.zip
chromium_src-745cf67ad12fc84d7c96ecf5c4e571717bbde176.tar.gz
chromium_src-745cf67ad12fc84d7c96ecf5c4e571717bbde176.tar.bz2
Added support for sigreturn() and rt_sigreturn(). On x86-32, this is
complicated by the fact that in Seccomp mode, we can only ever call sigreturn(). But in order to eventually support sigaction(), we want to be able to also call rt_sigreturn(). We solve this problem by rewriting the signal stack frame from an RT signal frame to a legacy frame. Fortunately, this part of the signal frame is stable between kernel versions. The unstable part (i.e. extended registers such as FP, MMX, SSE, ...) is always identical in both in both types of signal frames. None of these complications exist on x86-64 and it is relatively straight-forward to enable support for the system call. The only difficulty lies in the fact that its calling conventions are somewhat different from "normal" system calls. So, we have to handle rt_sigreturn() from within the syscallWrapper() and the segv() handler and cannot write it in C code. TEST=ad hoc testing until we have support for sigaction(). Then we can add a unittest BUG=37728 Review URL: http://codereview.chromium.org/1739011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45774 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/wow_helper')
0 files changed, 0 insertions, 0 deletions