configure: Check whether makecontext() is a glibc stub function
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 23 Feb 2012 16:20:05 +0000 (16:20 +0000)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 24 Feb 2012 19:36:06 +0000 (13:36 -0600)
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: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
configure

index b22fcda3cf40d7e33530d2380cb5f61b48149cee..f9d533004b6857ec84f91d0f9508b4a8c0829f72 100755 (executable)
--- a/configure
+++ b/configure
@@ -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