It work for me on my s3c6410 board. The new image run without exception. Signed-off-by: Yi Qingliang <[email protected]> <[email protected]>
On Sun, Sep 28, 2014 at 11:37 PM, Peter A. Bigot <[email protected]> wrote: > meta-raspberrypi and some other systems are ARMv6k but tell OE that > they're ARMv6 which doesn't fully support non-word atomics. armv6k > does, but Boost didn't handle the recognition correctly in the 1.56 > release. Backport the patch that fixes the build. > > See: https://svn.boost.org/trac/boost/ticket/10446 > Signed-off-by: Peter A. Bigot <[email protected]> > --- > > Note: > > I have only tested that this fixes the compile problems; I have not > verified that the resulting library works correctly with respect to > atomics. I'm expecting somebody who uses boost on a platform where this > is relevant to validate the functional behavior if that's necessary. > > Cc: [email protected] > Cc: [email protected] > > Peter > > ...rt-for-extending-operations-to-GCC-atomic.patch | 412 > +++++++++++++++++++++ > meta/recipes-support/boost/boost_1.56.0.bb | 5 +- > 2 files changed, 416 insertions(+), 1 deletion(-) > create mode 100644 > meta/recipes-support/boost/boost/0001-Added-support-for-extending-operations-to-GCC-atomic.patch > > diff --git > a/meta/recipes-support/boost/boost/0001-Added-support-for-extending-operations-to-GCC-atomic.patch > b/meta/recipes-support/boost/boost/0001-Added-support-for-extending-operations-to-GCC-atomic.patch > new file mode 100644 > index 0000000..feece81 > --- /dev/null > +++ > b/meta/recipes-support/boost/boost/0001-Added-support-for-extending-operations-to-GCC-atomic.patch > @@ -0,0 +1,412 @@ > +From 415db7054723291042e4ff1ffa8fdd5bc8b07163 Mon Sep 17 00:00:00 2001 > +From: Andrey Semashev <[email protected]> > +Date: Sat, 27 Sep 2014 20:40:09 +0400 > +Subject: [PATCH] Added support for extending operations to GCC atomic > backend. > + > +Fix for #10446. Some platforms (e.g. Raspberry Pi) only support atomic > ops of some particular size but not less. Use extending arithmetic > operations for these platforms. Also, make sure bools are always treated as > 8-bit values, even if the actual type is larger. This makes its use in > atomic<>, atomic_flag and lock pool more consistent. > + > +Upstream-Status: Backport [https://svn.boost.org/trac/boost/ticket/10446] > +Signed-off-by: Peter A. Bigot <[email protected]> > + > +--- > + include/boost/atomic/capabilities.hpp | 1 + > + include/boost/atomic/detail/atomic_template.hpp | 2 +- > + include/boost/atomic/detail/caps_gcc_atomic.hpp | 82 +++++------ > + include/boost/atomic/detail/ops_gcc_atomic.hpp | 184 > +++++++++++++++++++++--- > + 4 files changed, 206 insertions(+), 63 deletions(-) > + > +diff --git a/include/boost/atomic/capabilities.hpp > b/include/boost/atomic/capabilities.hpp > +index 658dd22..05bbb0f 100644 > +--- a/include/boost/atomic/capabilities.hpp > ++++ b/include/boost/atomic/capabilities.hpp > +@@ -142,6 +142,7 @@ > + #define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE > + > + #ifndef BOOST_ATOMIC_BOOL_LOCK_FREE > ++// We store bools in 1-byte storage in all backends > + #define BOOST_ATOMIC_BOOL_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE > + #endif > + > +diff --git a/include/boost/atomic/detail/atomic_template.hpp > b/include/boost/atomic/detail/atomic_template.hpp > +index 4fd6d79..bc3922a 100644 > +--- a/include/boost/atomic/detail/atomic_template.hpp > ++++ b/include/boost/atomic/detail/atomic_template.hpp > +@@ -234,7 +234,7 @@ class base_atomic< bool, int > > + { > + private: > + typedef bool value_type; > +- typedef atomics::detail::operations< storage_size_of< value_type > >::value, false > operations; > ++ typedef atomics::detail::operations< 1u, false > operations; > + > + protected: > + typedef value_type value_arg_type; > +diff --git a/include/boost/atomic/detail/caps_gcc_atomic.hpp > b/include/boost/atomic/detail/caps_gcc_atomic.hpp > +index 8299ad0..f4e7a70 100644 > +--- a/include/boost/atomic/detail/caps_gcc_atomic.hpp > ++++ b/include/boost/atomic/detail/caps_gcc_atomic.hpp > +@@ -29,66 +29,48 @@ > + #define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 > + #endif > + > +-#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 > +-#else > +-#define BOOST_ATOMIC_FLAG_LOCK_FREE 0 > +-#endif > +-#if __GCC_ATOMIC_CHAR_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 > +-#else > +-#define BOOST_ATOMIC_CHAR_LOCK_FREE 0 > +-#endif > +-#if __GCC_ATOMIC_CHAR16_T_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 > +-#else > +-#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 0 > +-#endif > +-#if __GCC_ATOMIC_CHAR32_T_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 > ++#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && > (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) > ++#define BOOST_ATOMIC_INT128_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 0 > ++#define BOOST_ATOMIC_INT128_LOCK_FREE 0 > + #endif > +-#if __GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 > ++ > ++#if __GCC_ATOMIC_LLONG_LOCK_FREE == 2 > ++#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 > ++#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE > + #endif > +-#if __GCC_ATOMIC_SHORT_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 > ++ > ++#if __GCC_ATOMIC_LONG_LOCK_FREE == 2 > ++#define BOOST_ATOMIC_LONG_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 > ++#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_LLONG_LOCK_FREE > + #endif > ++ > + #if __GCC_ATOMIC_INT_LOCK_FREE == 2 > + #define BOOST_ATOMIC_INT_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_INT_LOCK_FREE 0 > +-#endif > +-#if __GCC_ATOMIC_LONG_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_LONG_LOCK_FREE 2 > +-#else > +-#define BOOST_ATOMIC_LONG_LOCK_FREE 0 > ++#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_LONG_LOCK_FREE > + #endif > +-#if __GCC_ATOMIC_LLONG_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 > ++ > ++#if __GCC_ATOMIC_SHORT_LOCK_FREE == 2 > ++#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 > ++#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT_LOCK_FREE > + #endif > +-#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && > (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) > +-#define BOOST_ATOMIC_INT128_LOCK_FREE 2 > ++ > ++#if __GCC_ATOMIC_CHAR_LOCK_FREE == 2 > ++#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 > + #else > +-#define BOOST_ATOMIC_INT128_LOCK_FREE 0 > ++#define BOOST_ATOMIC_CHAR_LOCK_FREE BOOST_ATOMIC_SHORT_LOCK_FREE > + #endif > ++ > + #if __GCC_ATOMIC_POINTER_LOCK_FREE == 2 > + #define BOOST_ATOMIC_POINTER_LOCK_FREE 2 > + #else > + #define BOOST_ATOMIC_POINTER_LOCK_FREE 0 > + #endif > +-#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 > +-#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 > +-#else > +-#define BOOST_ATOMIC_BOOL_LOCK_FREE 0 > +-#endif > ++ > + > + #define BOOST_ATOMIC_INT8_LOCK_FREE BOOST_ATOMIC_CHAR_LOCK_FREE > + > +@@ -128,6 +110,24 @@ > + #define BOOST_ATOMIC_INT64_LOCK_FREE 0 > + #endif > + > ++ > ++#if __GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2 > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 > ++#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE > ++#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE > ++#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE > ++#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE > ++#else > ++#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 > ++#endif > ++ > ++#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE > ++#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE > ++ > + #define BOOST_ATOMIC_THREAD_FENCE 2 > + #define BOOST_ATOMIC_SIGNAL_FENCE 2 > + > +diff --git a/include/boost/atomic/detail/ops_gcc_atomic.hpp > b/include/boost/atomic/detail/ops_gcc_atomic.hpp > +index 2297791..2e4c37b 100644 > +--- a/include/boost/atomic/detail/ops_gcc_atomic.hpp > ++++ b/include/boost/atomic/detail/ops_gcc_atomic.hpp > +@@ -24,6 +24,15 @@ > + #include <boost/atomic/detail/ops_cas_based.hpp> > + #endif > + > ++#if __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE || > __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE ||\ > ++ __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE || > __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE ||\ > ++ __GCC_ATOMIC_CHAR_LOCK_FREE != BOOST_ATOMIC_CHAR_LOCK_FREE || > __GCC_ATOMIC_BOOL_LOCK_FREE != BOOST_ATOMIC_BOOL_LOCK_FREE ||\ > ++ __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE > ++// There are platforms where we need to use larger storage types > ++#include <boost/atomic/detail/int_sizes.hpp> > ++#include <boost/atomic/detail/ops_extending_cas_based.hpp> > ++#endif > ++ > + #ifdef BOOST_HAS_PRAGMA_ONCE > + #pragma once > + #endif > +@@ -154,73 +163,206 @@ struct gcc_atomic_operations > + } > + }; > + > +-#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 > ++#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 > ++#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) > ++ > ++// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149 > ++// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though > it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 > + template< bool Signed > > +-struct operations< 1u, Signed > : > +- public gcc_atomic_operations< typename make_storage_type< 1u, Signed > >::type > > ++struct operations< 16u, Signed > : > ++ public cas_based_operations< gcc_dcas_x86_64< Signed > > > + { > + }; > ++ > ++#else > ++ > ++template< bool Signed > > ++struct operations< 16u, Signed > : > ++ public gcc_atomic_operations< typename make_storage_type< 16u, > Signed >::type > > ++{ > ++}; > ++ > ++#endif > + #endif > + > +-#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 > ++ > ++#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 > ++#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) > ++ > ++// Workaround for clang bug http://llvm.org/bugs/show_bug.cgi?id=19355 > + template< bool Signed > > +-struct operations< 2u, Signed > : > +- public gcc_atomic_operations< typename make_storage_type< 2u, Signed > >::type > > ++struct operations< 8u, Signed > : > ++ public cas_based_operations< gcc_dcas_x86< Signed > > > ++{ > ++}; > ++ > ++#elif (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 && > __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 && __GCC_ATOMIC_LONG_LOCK_FREE > != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 && __GCC_ATOMIC_INT_LOCK_FREE > != BOOST_ATOMIC_INT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 && > __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 && > __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) > ++ > ++#define BOOST_ATOMIC_DETAIL_INT64_EXTENDED > ++ > ++template< bool Signed > > ++struct operations< 8u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 16u, Signed >::type >, 8u, Signed > > + { > + }; > ++ > ++#else > ++ > ++template< bool Signed > > ++struct operations< 8u, Signed > : > ++ public gcc_atomic_operations< typename make_storage_type< 8u, Signed > >::type > > ++{ > ++}; > ++ > ++#endif > + #endif > + > + #if BOOST_ATOMIC_INT32_LOCK_FREE > 0 > ++#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 && > __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 && __GCC_ATOMIC_LONG_LOCK_FREE > != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 && __GCC_ATOMIC_INT_LOCK_FREE > != BOOST_ATOMIC_INT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 && > __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 && > __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) > ++ > ++#define BOOST_ATOMIC_DETAIL_INT32_EXTENDED > ++ > ++#if !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) > ++ > ++template< bool Signed > > ++struct operations< 4u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 8u, Signed >::type >, 4u, Signed > > ++{ > ++}; > ++ > ++#else // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) > ++ > ++template< bool Signed > > ++struct operations< 4u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 16u, Signed >::type >, 4u, Signed > > ++{ > ++}; > ++ > ++#endif // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) > ++ > ++#else > ++ > + template< bool Signed > > + struct operations< 4u, Signed > : > + public gcc_atomic_operations< typename make_storage_type< 4u, Signed > >::type > > + { > + }; > ++ > ++#endif > + #endif > + > +-#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 > +-#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) > ++#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 > ++#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 && > __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 && __GCC_ATOMIC_LONG_LOCK_FREE > != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 && __GCC_ATOMIC_INT_LOCK_FREE > != BOOST_ATOMIC_INT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 && > __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 && > __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) > ++ > ++#define BOOST_ATOMIC_DETAIL_INT16_EXTENDED > ++ > ++#if !defined(BOOST_ATOMIC_DETAIL_INT32_EXTENDED) > + > +-// Workaround for clang bug http://llvm.org/bugs/show_bug.cgi?id=19355 > + template< bool Signed > > +-struct operations< 8u, Signed > : > +- public cas_based_operations< gcc_dcas_x86< Signed > > > ++struct operations< 2u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 4u, Signed >::type >, 2u, Signed > > ++{ > ++}; > ++ > ++#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) > ++ > ++template< bool Signed > > ++struct operations< 2u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 8u, Signed >::type >, 2u, Signed > > + { > + }; > + > + #else > + > + template< bool Signed > > +-struct operations< 8u, Signed > : > +- public gcc_atomic_operations< typename make_storage_type< 8u, Signed > >::type > > ++struct operations< 2u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 16u, Signed >::type >, 2u, Signed > > ++{ > ++}; > ++ > ++#endif > ++ > ++#else > ++ > ++template< bool Signed > > ++struct operations< 2u, Signed > : > ++ public gcc_atomic_operations< typename make_storage_type< 2u, Signed > >::type > > + { > + }; > + > + #endif > + #endif > + > +-#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 > +-#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) > ++#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 > ++#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 && > __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 && __GCC_ATOMIC_LONG_LOCK_FREE > != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 && __GCC_ATOMIC_INT_LOCK_FREE > != BOOST_ATOMIC_INT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 && > __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ > ++ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 && > __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) ||\ > ++ (__GCC_ATOMIC_CHAR_LOCK_FREE != BOOST_ATOMIC_CHAR_LOCK_FREE) ||\ > ++ (__GCC_ATOMIC_BOOL_LOCK_FREE != BOOST_ATOMIC_BOOL_LOCK_FREE) > ++ > ++#if !defined(BOOST_ATOMIC_DETAIL_INT16_EXTENDED) > + > +-// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149 > +-// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though > it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 > + template< bool Signed > > +-struct operations< 16u, Signed > : > +- public cas_based_operations< gcc_dcas_x86_64< Signed > > > ++struct operations< 1u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 2u, Signed >::type >, 1u, Signed > > ++{ > ++}; > ++ > ++#elif !defined(BOOST_ATOMIC_DETAIL_INT32_EXTENDED) > ++ > ++template< bool Signed > > ++struct operations< 1u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 4u, Signed >::type >, 1u, Signed > > ++{ > ++}; > ++ > ++#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) > ++ > ++template< bool Signed > > ++struct operations< 1u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 8u, Signed >::type >, 1u, Signed > > + { > + }; > + > + #else > + > + template< bool Signed > > +-struct operations< 16u, Signed > : > +- public gcc_atomic_operations< typename make_storage_type< 16u, > Signed >::type > > ++struct operations< 1u, Signed > : > ++ public extending_cas_based_operations< gcc_atomic_operations< > typename make_storage_type< 16u, Signed >::type >, 1u, Signed > > ++{ > ++}; > ++ > ++#endif > ++ > ++#else > ++ > ++template< bool Signed > > ++struct operations< 1u, Signed > : > ++ public gcc_atomic_operations< typename make_storage_type< 1u, Signed > >::type > > + { > + }; > + > + #endif > + #endif > + > ++#undef BOOST_ATOMIC_DETAIL_INT16_EXTENDED > ++#undef BOOST_ATOMIC_DETAIL_INT32_EXTENDED > ++#undef BOOST_ATOMIC_DETAIL_INT64_EXTENDED > ++ > + BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT > + { > + > __atomic_thread_fence(atomics::detail::convert_memory_order_to_gcc(order)); > +-- > +1.8.5.5 > + > diff --git a/meta/recipes-support/boost/boost_1.56.0.bb > b/meta/recipes-support/boost/boost_1.56.0.bb > index b199c88..dcc77bb 100644 > --- a/meta/recipes-support/boost/boost_1.56.0.bb > +++ b/meta/recipes-support/boost/boost_1.56.0.bb > @@ -1,4 +1,7 @@ > include boost-${PV}.inc > include boost.inc > > -SRC_URI += "file://arm-intrinsics.patch" > +SRC_URI += "\ > + file://arm-intrinsics.patch \ > + > file://0001-Added-support-for-extending-operations-to-GCC-atomic.patch;striplevel=2 > \ > +" > -- > 1.8.5.5 > >
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
