For PR351:

* Add checks for sterror and strerror_r functions
* Add check to determine if /dev/zero is needed for allocating RWX memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19148 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2004-12-27 06:15:02 +00:00
parent 5d01fa5bbe
commit 7931a7867b
3 changed files with 142 additions and 5 deletions

View File

@ -443,7 +443,8 @@ dnl===-----------------------------------------------------------------------===
AC_CHECK_FUNCS([backtrace getcwd getpagesize getrusage gettimeofday isatty ])
AC_CHECK_FUNCS([mkdtemp mkstemp mktemp ])
AC_CHECK_FUNCS([realpath setrlimit strdup strtoq strtoll sysconf ])
AC_CHECK_FUNCS([realpath setrlimit strdup strerror strerror_r strtoll strtoq ])
AC_CHECK_FUNCS([sysconf])
AC_C_PRINTF_A
AC_FUNC_ALLOCA
AC_FUNC_RAND48
@ -459,9 +460,11 @@ AC_FUNC_ISNAN
AC_FUNC_ISINF
dnl Check for mmap and mprotect support. We need both to do the JIT and for
dnl bytecode loading, etc.
dnl bytecode loading, etc. We also need to know if /dev/zero is required to
dnl be opened for allocating RWX memory.
AC_FUNC_MMAP
AC_FUNC_MMAP_FILE
AC_NEED_DEV_ZERO_FOR_MMAP
AC_CHECK_FUNC(mprotect,,
AC_MSG_ERROR([Function mprotect() required but not found]))

130
configure vendored
View File

@ -24601,7 +24601,7 @@ esac
ETAGSFLAGS=$ETAGSFLAGS
if test "$WITH_LLVMGCCDIR" != "default" ; then
if test "$WITH_LLVMGCCDIR" = "default" ; then
# Extract the first word of "llvm-gcc", so it can be a program name with args.
set dummy llvm-gcc; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
@ -25750,7 +25750,7 @@ echo "${ECHO_T}$ac_cv_header_mmap_anon" >&6
if test "$ac_cv_header_mmap_anon" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_MMAP_ANONYMOUS
#define HAVE_MMAP_ANONYMOUS 1
_ACEOF
fi
@ -27269,7 +27269,110 @@ done
for ac_func in realpath setrlimit strdup strtoq strtoll sysconf
for ac_func in realpath setrlimit strdup strerror strerror_r strtoll strtoq
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef $ac_func
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
{
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
char (*f) () = $ac_func;
#endif
#ifdef __cplusplus
}
#endif
int
main ()
{
return f != $ac_func;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
for ac_func in sysconf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@ -29747,6 +29850,27 @@ _ACEOF
fi
echo "$as_me:$LINENO: checking if /dev/zero is needed for mmap" >&5
echo $ECHO_N "checking if /dev/zero is needed for mmap... $ECHO_C" >&6
if test "${ac_cv_need_dev_zero_for_mmap+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$llvm_cv_os_type" == "Interix" ; then
ac_cv_need_dev_zero_for_mmap=yes
else
ac_cv_need_dev_zero_for_mmap=no
fi
fi
echo "$as_me:$LINENO: result: $ac_cv_need_dev_zero_for_mmap" >&5
echo "${ECHO_T}$ac_cv_need_dev_zero_for_mmap" >&6
if test "$ac_cv_need_dev_zero_for_mmap" = yes; then
cat >>confdefs.h <<\_ACEOF
#define NEED_DEV_ZERO_FOR_MMAP 1
_ACEOF
fi
echo "$as_me:$LINENO: checking for mprotect" >&5
echo $ECHO_N "checking for mprotect... $ECHO_C" >&6
if test "${ac_cv_func_mprotect+set}" = set; then

View File

@ -270,6 +270,12 @@
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the `strerror_r' function. */
#undef HAVE_STRERROR_R
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
@ -385,6 +391,10 @@
/* Define to the system default library search path. */
#undef LTDL_SYSSEARCHPATH
/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
its not necessary */
#undef NEED_DEV_ZERO_FOR_MMAP
/* Define if dlsym() requires a leading underscore in symbol names. */
#undef NEED_USCORE