Commit cdf84806 authored by Peter Maydell's avatar Peter Maydell Committed by Anthony Liguori
Browse files

configure: Check whether makecontext() is a glibc stub function



On some systems (notably ARM Linux) glibc provides implementations
of makecontext(), getcontext() and friends which are stubs which
always return failure. Make the configure test for makecontext()
also check for the presence of the __stub_makecontext macro which
indicates the presence of these stubs, so we can avoid trying to use
them and fall back to a different coroutine implementation instead.

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent 967c0da7
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2723,11 +2723,15 @@ fi

##########################################
# check if we have makecontext
# (and that it's not a glibc stub which always returns -1)

ucontext_coroutine=no
if test "$darwin" != "yes"; then
  cat > $TMPC << EOF
#include <ucontext.h>
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
int main(void) { makecontext(0, 0, 0); return 0; }
EOF
  if compile_prog "" "" ; then