summaryrefslogtreecommitdiff
path: root/m4/mmap-stack.m4
blob: cc7e80141bfb35fcacf2fb071da0897385763d1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#serial 1
# Arrange to define HAVE_MMAP_STACK and to compile mmap-stack.c
# if there is sufficient support.
# From Jim Meyering

AC_DEFUN([AC_SYS_MMAP_STACK],
[
  # prerequisites
  AC_REQUIRE([AC_FUNC_MMAP])
  AC_CHECK_HEADERS_ONCE(sys/mman.h ucontext.h stdarg.h)
  AC_CHECK_FUNCS_ONCE(getcontext makecontext setcontext)

  # For now, require tmpfile. FIXME: if there's a system with working mmap
  # and *context functions yet that lacks tmpfile, we can provide a replacement.
  AC_CHECK_FUNCS_ONCE(tmpfile)

  ac_i=$ac_cv_func_tmpfile
  ac_i=$ac_i:$ac_cv_func_getcontext
  ac_i=$ac_i:$ac_cv_func_makecontext
  ac_i=$ac_i:$ac_cv_func_setcontext
  ac_i=$ac_i:$ac_cv_func_mmap_fixed_mapped

  if test $ac_i = yes:yes:yes:yes:yes; then
    AC_LIBOBJ(mmap-stack)
    AC_DEFINE(HAVE_MMAP_STACK, 1,
      [Define to 1 if there is sufficient support (mmap, getcontext,
       makecontext, setcontext) for running a process with mmap'd
       memory for its stack.])
  fi
])