From c7ddafbe6dbcc805a9758c4313f2d6b902983343 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Fri, 21 Feb 2014 09:29:40 +0100 Subject: Always default to disabled floating point exceptions on Linux This since there exist unresolved stability issues in the implementation for Linux. --- HOWTO/INSTALL.md | 7 ++++++- erts/configure.in | 5 +++++ otp_build | 18 ++++++++---------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/HOWTO/INSTALL.md b/HOWTO/INSTALL.md index 533960ef99..fd0108f1de 100644 --- a/HOWTO/INSTALL.md +++ b/HOWTO/INSTALL.md @@ -268,6 +268,11 @@ Some of the available `configure` options are: default if possible) * `--{enable,disable}-hipe` - HiPE support (enabled by default on supported platforms) +* `--{enable,disable}-fp-exceptions` - Floating point exceptions (an + optimization for floating point operations). The default differs + depending on operating system and hardware platform. Note that by + enabling this you might get a seemingly working system that sometimes + fail on floating point operations. * `--enable-darwin-universal` - Build universal binaries on darwin i386. * `--enable-darwin-64bit` - Build 64-bit binaries on darwin * `--enable-m64-build` - Build 64-bit binaries using the `-m64` flag to @@ -288,7 +293,7 @@ Some of the available `configure` options are: memory accesses. If `configure` should inform you about no native atomic implementation available, you typically want to try using the `libatomic_ops` library. It can be downloaded from - . + . * `--disable-smp-require-native-atomics` - By default `configure` will fail if an SMP runtime system is about to be built, and no implementation for native atomic memory accesses can be found. If this happens, you are diff --git a/erts/configure.in b/erts/configure.in index 8d245252b5..0933b124df 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -2767,6 +2767,11 @@ esac if test X${enable_fp_exceptions} = Xauto ; then case $host_os in + *linux*) + enable_fp_exceptions=no + AC_MSG_NOTICE([Floating point exceptions disabled by default on Linux]) ;; + *) + ;; darwin*) enable_fp_exceptions=no AC_MSG_NOTICE([Floating point exceptions disabled by default on MacOS X]) ;; diff --git a/otp_build b/otp_build index f5a7a0be44..5f41e40f5f 100755 --- a/otp_build +++ b/otp_build @@ -173,6 +173,14 @@ determine_version_controller () # Special static config flags for certain platforms are set here set_config_flags () { + # + # NOTE! Do not add special flags here without a *very good* + # reason. We normally do not want "./otp_build configure" + # and "./configure" to produce different results. + # However, in the Windows case this does not matter, since + # the only supported way to build on Windows is using + # otp_build. + # # * Extra flags to pass to configure are placed in `CONFIG_FLAGS'. # * The command line is no longer added to `CONFIG_FLAGS' by # `set_config_flags'. It is instead passed directly to @@ -183,16 +191,6 @@ set_config_flags () # (in the cross compilation case the whole command line as well as # the cross configuration have been moved here). - if target_contains linux; then - XX=`echo $* | grep -v able-fp-exceptions` - if [ "$*" = "$XX" ]; then - CONFIG_FLAGS="$CONFIG_FLAGS --disable-fp-exceptions" - fi - fi - if target_contains "univel-sysv4"; then - CONFIG_FLAGS="$CONFIG_FLAGS --x-libraries=/usr/lib/X11" - fi - if target_contains free_source; then CONFIG_FLAGS="$CONFIG_FLAGS --host=$TARGET" fi -- cgit v1.2.3