diff options
author | Rickard Green <[email protected]> | 2014-02-21 09:29:40 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2014-02-24 14:32:03 +0100 |
commit | c7ddafbe6dbcc805a9758c4313f2d6b902983343 (patch) | |
tree | 69874a18877e52fe56ba3cc60ec5cba393db98a6 | |
parent | 9fbb7a9a72a9b9f2bc12aebdbc89cac4bcd21873 (diff) | |
download | otp-c7ddafbe6dbcc805a9758c4313f2d6b902983343.tar.gz otp-c7ddafbe6dbcc805a9758c4313f2d6b902983343.tar.bz2 otp-c7ddafbe6dbcc805a9758c4313f2d6b902983343.zip |
Always default to disabled floating point exceptions on Linux
This since there exist unresolved stability issues in the implementation
for Linux.
-rw-r--r-- | HOWTO/INSTALL.md | 7 | ||||
-rw-r--r-- | erts/configure.in | 5 | ||||
-rwxr-xr-x | 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 - <http://www.hpl.hp.com/research/linux/atomic_ops/>. + <https://github.com/ivmai/libatomic_ops/>. * `--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]) ;; @@ -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 |