aboutsummaryrefslogtreecommitdiff
path: root/stdlib/tst-setcontext.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/tst-setcontext.c')
-rw-r--r--stdlib/tst-setcontext.c16
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];