diff options
Diffstat (limited to 'infrastructure')
-rw-r--r-- | infrastructure/m4/ax_func_syscall.m4 | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/infrastructure/m4/ax_func_syscall.m4 b/infrastructure/m4/ax_func_syscall.m4 index a0ab503c..2429ca93 100644 --- a/infrastructure/m4/ax_func_syscall.m4 +++ b/infrastructure/m4/ax_func_syscall.m4 @@ -12,24 +12,35 @@ dnl @category C dnl @author Martin Ebourne dnl @version 2005/07/01 dnl @license AllPermissive +dnl +dnl Changed by Chris on 081026: +dnl +dnl Reversed the test for __syscall(), remove the test for syscall(), +dnl remove the definition and reverse the sense in ax_func_syscall.m4 +dnl (which checks for __syscall() needing definition). +dnl +dnl Autoconf's AC_CHECK_FUNC defines it when testing for its presence, +dnl so HAVE___SYSCALL will be true even if __syscall has no definition +dnl in the system libraries, and this is precisely the case that we +dnl want to test for, so now we test whether the test program compiles +dnl with no explicit definition (only the system headers) and if that +dnl fails, we set HAVE___SYSCALL_NEED_DEFN to 1. AC_DEFUN([AX_FUNC_SYSCALL], [ AC_CHECK_HEADERS([sys/syscall.h unistd.h]) AC_CHECK_FUNCS([syscall __syscall]) - if test "x$ac_cv_func_syscall" != "xyes" && - test "x$ac_cv_func___syscall" != "xyes"; then + if test "x$ac_cv_func___syscall" = "xyes"; then AC_CACHE_CHECK([for __syscall needing definition], [box_cv_have___syscall_need_defn], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ $ac_includes_default #ifdef HAVE_SYS_SYSCALL_H #include <sys/syscall.h> #endif - extern "C" off_t __syscall(quad_t number, ...); ]], [[ __syscall(SYS_exit, 0); return 1; ]])], - [box_cv_have___syscall_need_defn=yes], [box_cv_have___syscall_need_defn=no] + [box_cv_have___syscall_need_defn=no], [box_cv_have___syscall_need_defn=yes] )]) if test "x$box_cv_have___syscall_need_defn" = "xyes"; then AC_DEFINE([HAVE___SYSCALL_NEED_DEFN], 1, |