summary refs log tree commit diff
path: root/pkgs/development/libraries/boost/clang-math.patch
diff options
context:
space:
mode:
authorDan Peebles <thetypesaretoobig@gmail.com>2015-02-08 21:42:22 -0500
committerDan Peebles <thetypesaretoobig@gmail.com>2015-02-08 22:19:04 -0500
commitb0e1db115968c79746b77de99fd5107359ebff9d (patch)
tree5aadffb5e39126374d16272c55733a5b935c8b1b /pkgs/development/libraries/boost/clang-math.patch
parentc165f24208d770713934c0cd943255d54a73d35c (diff)
downloadnixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.gz
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.bz2
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.lz
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.xz
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.zst
nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.zip
Fix boost 1.55 on clang (1.56 onwards already have the fix)
See https://trac.macports.org/ticket/42282 for more.
Diffstat (limited to 'pkgs/development/libraries/boost/clang-math.patch')
-rw-r--r--pkgs/development/libraries/boost/clang-math.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/development/libraries/boost/clang-math.patch b/pkgs/development/libraries/boost/clang-math.patch
new file mode 100644
index 00000000000..aa3d76af28b
--- /dev/null
+++ b/pkgs/development/libraries/boost/clang-math.patch
@@ -0,0 +1,65 @@
+From e4bde20f2eec0a51be14533871d2123bd2ab9cf3 Mon Sep 17 00:00:00 2001
+From: Andrey Semashev <andrey.semashev@gmail.com>
+Date: Fri, 28 Feb 2014 12:43:11 +0400
+Subject: [PATCH] More compilation fixes for the case when 128-bit integers are
+ not supported.
+
+---
+ boost/atomic/detail/gcc-atomic.hpp | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/boost/atomic/detail/gcc-atomic.hpp b/boost/atomic/detail/gcc-atomic.hpp
+index a130590..4af99a1 100644
+--- a/boost/atomic/detail/gcc-atomic.hpp
++++ b/boost/atomic/detail/gcc-atomic.hpp
+@@ -958,14 +958,16 @@ class base_atomic<T, void, 16, Sign>
+ 
+ public:
+     BOOST_DEFAULTED_FUNCTION(base_atomic(void), {})
+-    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
++    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+     {
++        memset(&v_, 0, sizeof(v_));
+         memcpy(&v_, &v, sizeof(value_type));
+     }
+ 
+     void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type tmp = 0;
++        storage_type tmp;
++        memset(&tmp, 0, sizeof(tmp));
+         memcpy(&tmp, &v, sizeof(value_type));
+         __atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
+     }
+@@ -980,7 +982,8 @@ class base_atomic<T, void, 16, Sign>
+ 
+     value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type tmp = 0;
++        storage_type tmp;
++        memset(&tmp, 0, sizeof(tmp));
+         memcpy(&tmp, &v, sizeof(value_type));
+         tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
+         value_type res;
+@@ -994,7 +997,9 @@ class base_atomic<T, void, 16, Sign>
+         memory_order success_order,
+         memory_order failure_order) volatile BOOST_NOEXCEPT
+     {
+-        storage_type expected_s = 0, desired_s = 0;
++        storage_type expected_s, desired_s;
++        memset(&expected_s, 0, sizeof(expected_s));
++        memset(&desired_s, 0, sizeof(desired_s));
+         memcpy(&expected_s, &expected, sizeof(value_type));
+         memcpy(&desired_s, &desired, sizeof(value_type));
+         const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false,
+@@ -1010,7 +1015,9 @@ class base_atomic<T, void, 16, Sign>
+         memory_order success_order,
+         memory_order failure_order) volatile BOOST_NOEXCEPT
+     {
+-        storage_type expected_s = 0, desired_s = 0;
++        storage_type expected_s, desired_s;
++        memset(&expected_s, 0, sizeof(expected_s));
++        memset(&desired_s, 0, sizeof(desired_s));
+         memcpy(&expected_s, &expected, sizeof(value_type));
+         memcpy(&desired_s, &desired, sizeof(value_type));
+         const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true,