mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 16:36:21 +00:00
39 lines
695 B
C
39 lines
695 B
C
/* Test of correct simulation for uc->uc_link. */
|
|
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
#include <ucontext.h>
|
|
|
|
static void print_value(int value)
|
|
{
|
|
printf("Value is %d.\n", value);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
ucontext_t uc;
|
|
char stack[8096];
|
|
volatile int done = 0;
|
|
|
|
/* Get current context. */
|
|
getcontext(&uc);
|
|
if (done) {
|
|
/* Execution resumes here when print_value() returns. */
|
|
return 0;
|
|
}
|
|
done = 1;
|
|
|
|
/* Setup the stack. */
|
|
uc.uc_stack.ss_sp = stack;
|
|
uc.uc_stack.ss_size = sizeof(stack);
|
|
|
|
/* Call print_value(). */
|
|
makecontext(&uc, print_value, 1, 42);
|
|
setcontext(&uc);
|
|
|
|
/* This code should not be reached. */
|
|
assert(0);
|
|
return 0;
|
|
}
|
|
|