[OE-core] [PATCH] boost: Add patch to avoid undefined references to boost::atomic::lockpool::get_lock_for()

Khem Raj raj.khem at gmail.com
Thu Nov 14 14:53:02 UTC 2013


On Thursday, November 14, 2013, Phil Blundell wrote:

> Boost::thread uses functions from boost::atomic but doesn't actually
> link with libboost_atomic.  This works fine on platforms where
> BOOST_ATOMIC_FLAG_LOCK_FREE is true but will lead to undefined
> symbol references otherwise.  Fix this by applying a patch from
> the upstream bug tracker to add the missing library linkage.


Is it fixed in 1.55? Then we might apply this to Dora and upgrade master to
1.55

>
> Signed-off-by: Phil Blundell <pb at pbcl.net <javascript:;>>
> ---
>  meta/recipes-support/boost/boost_1.54.0.bb         |  1 +
>  .../files/boost-1.54.0-thread-link_atomic.patch    | 59
> ++++++++++++++++++++++
>  2 files changed, 60 insertions(+)
>  create mode 100644
> meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch
>
> diff --git a/meta/recipes-support/boost/boost_1.54.0.bbb/meta/recipes-support/boost/
> boost_1.54.0.bb
> index 3cf88fa..9e7a60a 100644
> --- a/meta/recipes-support/boost/boost_1.54.0.bb
> +++ b/meta/recipes-support/boost/boost_1.54.0.bb
> @@ -3,4 +3,5 @@ include boost.inc
>
>  SRC_URI += "file://arm-intrinsics.patch \
>              file://glibc.patch \
> +            file://boost-1.54.0-thread-link_atomic.patch \
>             "
> diff --git
> a/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch
> b/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch
> new file mode 100644
> index 0000000..d39d0a9
> --- /dev/null
> +++
> b/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch
> @@ -0,0 +1,59 @@
> +Link boost_thread with boost_atomic to avoid undefined references to
> +boost::atomic::detail::lock_pool::get_lock_for().
> +
> +From https://svn.boost.org/trac/boost/ticket/9041
> +
> +Phil Blundell <pb at pbcl.net <javascript:;>>
> +Upstream-Status: Backport
> +
> +diff -Nurp
> boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp
> boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp
> +--- boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp
> 1970-01-01 01:00:00.000000000 +0100
> ++++ boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp       2013-08-23 19:51:52.706329968 +0200
> +@@ -0,0 +1,14 @@
> ++// Copyright (c) 2013, Petr Machata, Red Hat Inc.
> ++//
> ++// Use modification and distribution are subject to the boost Software
> ++// License, Version 1.0.  (See http://www.boost.org/LICENSE_1_0.txt).
> ++
> ++#include "../../../boost/atomic.hpp"
> ++#include "../../../boost/static_assert.hpp"
> ++
> ++int
> ++main(int argc, char *argv[])
> ++{
> ++  BOOST_STATIC_ASSERT(BOOST_ATOMIC_FLAG_LOCK_FREE);
> ++  return 0;
> ++}
> +diff -Nurp boost_1_54_0/libs/thread/build/Jamfile.v2
> boost_1_54_0.pm/libs/thread/build/Jamfile.v2
> +--- boost_1_54_0/libs/thread/build/Jamfile.v2  2013-06-15
> 12:35:45.000000000 +0200
> ++++ boost_1_54_0.pm/libs/thread/build/Jamfile.v2       2013-08-23
> 19:52:30.018613408 +0200
> +@@ -36,6 +36,7 @@ import os ;
> + import feature ;
> + import indirect ;
> + import path ;
> ++import configure ;
> +
> + project boost/thread
> +     : source-location ../src
> +@@ -140,6 +141,8 @@ local rule default_threadapi ( )
> + feature.feature threadapi : pthread win32 : propagated ;
> + feature.set-default threadapi : [ default_threadapi ] ;
> +
> ++exe has_atomic_flag_lockfree :
> ../build/has_atomic_flag_lockfree_test.cpp ;
> ++
> + rule tag ( name : type ? : property-set )
> + {
> +     local result = $(name) ;
> +@@ -248,6 +251,12 @@ rule requirements ( properties * )
> + {
> +     local result ;
> +
> ++    if ! [ configure.builds has_atomic_flag_lockfree
> ++         : $(properties) : "lockfree boost::atomic_flag" ]
> ++    {
> ++        result += <library>/boost/atomic//boost_atomic ;
> ++    }
> ++
> +     if <threadapi>pthread in $(properties)
> +     {
> +         result += <define>BOOST_THREAD_POSIX ;
> --
> 1.8.4.rc3
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org <javascript:;>
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20131114/c3b22e68/attachment-0002.html>


More information about the Openembedded-core mailing list