dnl AC_CHECK_UCONTEXT: Check whether ucontext are working
dnl Most of the code is stolen from the GNU pth autoconf macros by
-dnl Ralf S. Engelschall. As
+dnl Ralf S. Engelschall.
dnl # ``"Reuse an expert's code" is the right
dnl # advice for most people. But it's a useless
dnl # advice for the experts writing the code
dnl ## #endif
dnl ##
-AC_DEFUN(AC_CHECK_STACKGROWTH,[dnl
+AC_DEFUN([AC_CHECK_STACKGROWTH],[dnl
AC_MSG_CHECKING(for direction of stack growth)
AC_CACHE_VAL(ac_cv_check_stackgrowth, [
cross_compiling=no
dnl ## AC_CHECK_MCSC(<success-action>, <failure-action>)
dnl ##
-AC_DEFUN(AC_CHECK_MCSC, [
+AC_DEFUN([AC_CHECK_MCSC], [
AC_MSG_CHECKING(for usable SVR4/SUSv2 makecontext(2)/swapcontext(2))
AC_CACHE_VAL(ac_cv_check_mcsc, [
AC_TRY_RUN([
ucontext_t uc_child;
ucontext_t uc_main;
-void child(void *arg)
+void child(void)
{
- if (arg != (void *)12345)
- exit(1);
if (swapcontext(&uc_child, &uc_main) != 0)
- exit(1);
+ exit(2);
}
int main(int argc, char *argv[])
/* the default is that it fails */
if ((fp = fopen("conftestval", "w")) == NULL)
- exit(1);
+ exit(3);
fprintf(fp, "no\n");
fclose(fp);
/* configure a child user-space context */
if ((stack = malloc(64*1024)) == NULL)
- exit(1);
+ exit(4);
if (getcontext(&uc_child) != 0)
- exit(1);
+ exit(5);
uc_child.uc_link = NULL;
uc_child.uc_stack.ss_sp = (char *)stack+(32*1024);
uc_child.uc_stack.ss_size = 32*1024;
uc_child.uc_stack.ss_flags = 0;
- makecontext(&uc_child, child, 2, (void *)12345);
+ makecontext(&uc_child, child, 0);
/* switch into the user context */
if (swapcontext(&uc_main, &uc_child) != 0)
- exit(1);
+ exit(6);
/* Fine, child came home */
if ((fp = fopen("conftestval", "w")) == NULL)
- exit(1);
+ exit(7);
fprintf(fp, "yes\n");
fclose(fp);
dnl ## xxx.sp_size = <macro-size>(skaddr, sksize);
dnl ##
-AC_DEFUN(AC_CHECK_STACKSETUP,[dnl
+AC_DEFUN([AC_CHECK_STACKSETUP],[dnl
dnl # check for consistent usage
ifelse($1,[sigstack],,[
ifelse($1,[sigaltstack],,[
uc_handler.uc_stack.ss_sp = (void *)(skaddr + sksize);
uc_handler.uc_stack.ss_size = sksize;
uc_handler.uc_stack.ss_flags = 0;
- makecontext(&uc_handler, handler, 1);
+ makecontext(&uc_handler, handler, 0);
swapcontext(&uc_main, &uc_handler);
}
#endif