[PATCH] Fix tst-setcontext9 for optimized small stacks.
Carlos O'Donell
carlos@redhat.com
Tue Sep 18 14:31:00 GMT 2018
HJ,
Can I get a Reviewed-by from you for this? It looks like I'm keeping
the relative structure of the original test, but I'm not sure what
your intent was here with respect to CET testing. I'm seeing crashes
in this test on i686 testing as described in the commit message.
~~~
If the compiler reduces the stack usage in function f1 before calling
into function f2, then when we swapcontext back to f1 and continue
execution we may overwrite registers that were spilled to the stack
while f2 was executing. Later when we return to f2 the corrupt
registers will be reloaded from the stack and the test will crash. This
was most commonly observed on i686 with __x86.get_pc_thunk.dx and
needing to save and restore $edx. Overall i686 has few registers and
the spilling to the stack is bound to happen, therefore the solution to
making this test robust is to split function f1 into two parts f1a and
f1b, and allocate f1b it's own stack such that subsequent execution does
not overwrite the stack in use by function f2.
Tested on i686 and x86_64.
Signed-off-by: Carlos O'Donell <carlos@redhat.com>
--
Cheers,
Carlos.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-tst-setcontext9-for-optimized-small-stacks.patch
Type: text/x-patch
Size: 3650 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20180918/d164a25c/attachment.bin>
More information about the Libc-alpha
mailing list