mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-10 08:10:49 +00:00
Disable ffcall if native exceptions are in use.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27156 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
6a344a1499
commit
bf6ddf132e
3 changed files with 59 additions and 7 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2008-11-27 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: check for native exceptions use.
|
||||||
|
* configure: regenerate
|
||||||
|
Disable the use of ffcall with native exceptions as the two are
|
||||||
|
incompatible (ffcall changes the stack so that throwing an exception
|
||||||
|
will crash the process).
|
||||||
|
|
||||||
2008-11-27 Richard Frith-Macdonald <rfm@gnu.org>
|
2008-11-27 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Source/NSDistributedNotificationCenter.m:
|
* Source/NSDistributedNotificationCenter.m:
|
||||||
|
|
28
configure
vendored
28
configure
vendored
|
@ -1379,6 +1379,13 @@ if test -z "$GNUSTEP_MAKEFILES"; then
|
||||||
GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>&5`
|
GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>&5`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
exceptions=`gnustep-config --objc-flags | grep _NATIVE_OBJC_EXCEPTIONS 2>&5`
|
||||||
|
if test -z "$exceptions"; then
|
||||||
|
exceptions=no
|
||||||
|
else
|
||||||
|
exceptions=yes
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$GNUSTEP_MAKEFILES"; then
|
if test -z "$GNUSTEP_MAKEFILES"; then
|
||||||
{ { echo "$as_me:$LINENO: error: You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!" >&5
|
{ { echo "$as_me:$LINENO: error: You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!" >&5
|
||||||
echo "$as_me: error: You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!" >&2;}
|
echo "$as_me: error: You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!" >&2;}
|
||||||
|
@ -16550,7 +16557,6 @@ case "$target_cpu" in
|
||||||
sparc64*)
|
sparc64*)
|
||||||
case "$target_os" in
|
case "$target_os" in
|
||||||
solaris*)
|
solaris*)
|
||||||
do_broken_libffi=no;
|
|
||||||
do_broken_libffcall=yes;
|
do_broken_libffcall=yes;
|
||||||
do_enable_libffi=yes;
|
do_enable_libffi=yes;
|
||||||
do_enable_libffcall=no;;
|
do_enable_libffcall=no;;
|
||||||
|
@ -16559,6 +16565,12 @@ case "$target_cpu" in
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if test "$exceptions" = "yes"; then
|
||||||
|
# ffcall will mess up native exceptions, so we must disable it.
|
||||||
|
do_broken_libffcall=yes
|
||||||
|
do_enable_libffcall=no
|
||||||
|
fi
|
||||||
|
|
||||||
# Check whether --enable-libffi or --disable-libffi was given.
|
# Check whether --enable-libffi or --disable-libffi was given.
|
||||||
if test "${enable_libffi+set}" = set; then
|
if test "${enable_libffi+set}" = set; then
|
||||||
enableval="$enable_libffi"
|
enableval="$enable_libffi"
|
||||||
|
@ -16622,7 +16634,8 @@ esac
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "${ac_cv_header_ffi_h+set}" = set; then
|
if test "$do_broken_ffi" = "no"; then
|
||||||
|
if test "${ac_cv_header_ffi_h+set}" = set; then
|
||||||
echo "$as_me:$LINENO: checking for ffi.h" >&5
|
echo "$as_me:$LINENO: checking for ffi.h" >&5
|
||||||
echo $ECHO_N "checking for ffi.h... $ECHO_C" >&6
|
echo $ECHO_N "checking for ffi.h... $ECHO_C" >&6
|
||||||
if test "${ac_cv_header_ffi_h+set}" = set; then
|
if test "${ac_cv_header_ffi_h+set}" = set; then
|
||||||
|
@ -16766,6 +16779,10 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
have_libffi=no
|
||||||
|
fi
|
||||||
|
if test "$do_broken_ffcall" = "no"; then
|
||||||
|
|
||||||
for ac_header in callback.h
|
for ac_header in callback.h
|
||||||
do
|
do
|
||||||
|
@ -16918,6 +16935,9 @@ fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
else
|
||||||
|
have_ffcall=no
|
||||||
|
fi
|
||||||
if test $have_ffcall = no; then
|
if test $have_ffcall = no; then
|
||||||
enable_ffcall=no
|
enable_ffcall=no
|
||||||
# If we don't have ffcall but do have libffi, use libffi
|
# If we don't have ffcall but do have libffi, use libffi
|
||||||
|
@ -17202,7 +17222,9 @@ echo "${ECHO_T}none" >&6
|
||||||
echo "we recommend installing libffi instead."
|
echo "we recommend installing libffi instead."
|
||||||
else
|
else
|
||||||
echo "You do not have either ffcall or libffi installed, or configure needs"
|
echo "You do not have either ffcall or libffi installed, or configure needs"
|
||||||
echo "--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them"
|
echo "--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them,"
|
||||||
|
echo "or you have ffcall but gnustep-make is configured to use native exceptions"
|
||||||
|
echo "(native exceptions are not compatible with ffcall)."
|
||||||
fi
|
fi
|
||||||
echo "GNUstep requires ffcall or libffi and proper libobjc hooks to do"
|
echo "GNUstep requires ffcall or libffi and proper libobjc hooks to do"
|
||||||
echo "invocations and DO."
|
echo "invocations and DO."
|
||||||
|
|
30
configure.ac
30
configure.ac
|
@ -39,6 +39,13 @@ if test -z "$GNUSTEP_MAKEFILES"; then
|
||||||
GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>&5`
|
GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>&5`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
exceptions=`gnustep-config --objc-flags | grep _NATIVE_OBJC_EXCEPTIONS 2>&5`
|
||||||
|
if test -z "$exceptions"; then
|
||||||
|
exceptions=no
|
||||||
|
else
|
||||||
|
exceptions=yes
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$GNUSTEP_MAKEFILES"; then
|
if test -z "$GNUSTEP_MAKEFILES"; then
|
||||||
AC_MSG_ERROR([You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!])
|
AC_MSG_ERROR([You must have the gnustep-make package installed and set up the GNUSTEP_MAKEFILES environment variable to contain the path to the makefiles directory before configuring!])
|
||||||
fi
|
fi
|
||||||
|
@ -1910,7 +1917,6 @@ case "$target_cpu" in
|
||||||
sparc64*)
|
sparc64*)
|
||||||
case "$target_os" in
|
case "$target_os" in
|
||||||
solaris*)
|
solaris*)
|
||||||
do_broken_libffi=no;
|
|
||||||
do_broken_libffcall=yes;
|
do_broken_libffcall=yes;
|
||||||
do_enable_libffi=yes;
|
do_enable_libffi=yes;
|
||||||
do_enable_libffcall=no;;
|
do_enable_libffcall=no;;
|
||||||
|
@ -1919,6 +1925,12 @@ case "$target_cpu" in
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if test "$exceptions" = "yes"; then
|
||||||
|
# ffcall will mess up native exceptions, so we must disable it.
|
||||||
|
do_broken_libffcall=yes
|
||||||
|
do_enable_libffcall=no
|
||||||
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(libffi,
|
AC_ARG_ENABLE(libffi,
|
||||||
[ --enable-libffi Enable use of libffi library],,
|
[ --enable-libffi Enable use of libffi library],,
|
||||||
enable_libffi=$do_enable_libffi)
|
enable_libffi=$do_enable_libffi)
|
||||||
|
@ -1951,8 +1963,16 @@ if test ${ffi_libdir} != "no"; then
|
||||||
GS_ADD_LIBRARY_PATH([${ffi_libdir}])
|
GS_ADD_LIBRARY_PATH([${ffi_libdir}])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECK_HEADER(ffi.h, have_libffi=yes, have_libffi=no)
|
if test "$do_broken_ffi" = "no"; then
|
||||||
AC_CHECK_HEADERS(callback.h, have_ffcall=yes, have_ffcall=no)
|
AC_CHECK_HEADER(ffi.h, have_libffi=yes, have_libffi=no)
|
||||||
|
else
|
||||||
|
have_libffi=no
|
||||||
|
fi
|
||||||
|
if test "$do_broken_ffcall" = "no"; then
|
||||||
|
AC_CHECK_HEADERS(callback.h, have_ffcall=yes, have_ffcall=no)
|
||||||
|
else
|
||||||
|
have_ffcall=no
|
||||||
|
fi
|
||||||
if test $have_ffcall = no; then
|
if test $have_ffcall = no; then
|
||||||
enable_ffcall=no
|
enable_ffcall=no
|
||||||
# If we don't have ffcall but do have libffi, use libffi
|
# If we don't have ffcall but do have libffi, use libffi
|
||||||
|
@ -2041,7 +2061,9 @@ if test $ffi_ok = no; then
|
||||||
echo "we recommend installing libffi instead."
|
echo "we recommend installing libffi instead."
|
||||||
else
|
else
|
||||||
echo "You do not have either ffcall or libffi installed, or configure needs"
|
echo "You do not have either ffcall or libffi installed, or configure needs"
|
||||||
echo "--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them"
|
echo "--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them,"
|
||||||
|
echo "or you have ffcall but gnustep-make is configured to use native exceptions"
|
||||||
|
echo "(native exceptions are not compatible with ffcall)."
|
||||||
fi
|
fi
|
||||||
echo "GNUstep requires ffcall or libffi and proper libobjc hooks to do"
|
echo "GNUstep requires ffcall or libffi and proper libobjc hooks to do"
|
||||||
echo "invocations and DO."
|
echo "invocations and DO."
|
||||||
|
|
Loading…
Reference in a new issue