diff --git a/autoconf/aclocal.m4 b/autoconf/aclocal.m4 index aca868ab123..32db1b3cfee 100644 --- a/autoconf/aclocal.m4 +++ b/autoconf/aclocal.m4 @@ -6244,4 +6244,20 @@ AC_DEFUN([AC_C_PRINTF_A], fi ]) - +# +# Determine if the system can handle the -R option being passed to the linker. +# +AC_DEFUN([AC_LINK_USE_R], +[ + AC_LANG_SAVE + AC_LANG_C + oldcflags=${CFLAGS} + CFLAGS="${CFLAGS} -Wl,-R." + AC_LINK_IFELSE([int main() { return 0;}],[ac_cv_link_use_r=yes],[ac_cv_link_se_r=no]) + CFLAGS=${oldcflags} + AC_LANG_RESTORE + if test "$ac_cv_link_use_r = yes" + then + AC_DEFINE([HAVE_LINK_R],[1]) + fi +]) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 06d06b9525b..c3d6c0af8ce 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -523,6 +523,9 @@ dnl these checks should go away. AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found])) AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found])) +dnl Determine if the linker supports the -R option. +AC_LINK_USE_R() + dnl ************************************************************************** dnl * Enable various compile-time options dnl ************************************************************************** diff --git a/configure b/configure index 4f70a4cc015..abdffc336b7 100755 --- a/configure +++ b/configure @@ -22980,6 +22980,56 @@ fi + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + oldcflags=${CFLAGS} + CFLAGS="${CFLAGS} -Wl,-R." + cat >conftest.$ac_ext <<_ACEOF +int main() { return 0;} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 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 + ac_cv_link_use_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_link_se_r=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + CFLAGS=${oldcflags} + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test "$ac_cv_link_use_r = yes" + then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LINK_R 1 +_ACEOF + + fi + + + # Check whether --enable-purify or --disable-purify was given. if test "${enable_purify+set}" = set; then enableval="$enable_purify"