diff options
Diffstat (limited to 'stdlib/tst-setcontext.c')
-rw-r--r-- | stdlib/tst-setcontext.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c index ed53f9e..637c2c5 100644 --- a/stdlib/tst-setcontext.c +++ b/stdlib/tst-setcontext.c @@ -71,6 +71,8 @@ f2 (void) was_in_f2 = 1; } +volatile int global; + int main (void) { @@ -85,6 +87,20 @@ main (void) printf ("%s: getcontext: %m\n", __FUNCTION__); exit (1); } + + /* Play some tricks with this context. */ + if (++global == 1) + if (setcontext (&ctx[1]) != 0) + { + printf ("%s: setcontext: %m\n", __FUNCTION__); + exit (1); + } + if (global != 2) + { + printf ("%s: 'global' not incremented twice\n", __FUNCTION__); + exit (1); + } + ctx[1].uc_stack.ss_sp = st1; ctx[1].uc_stack.ss_size = sizeof st1; ctx[1].uc_link = &ctx[0]; |