All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] boost: thread needs atomic if GCC has bug 64735
Date: Sat, 28 Jul 2018 22:53:05 +0200	[thread overview]
Message-ID: <20180728225305.62561b58@windsurf> (raw)
In-Reply-To: <20180714230547.0677413c@windsurf>

Hello Fabrice,

Have you had the chance to look into the below issue and questions ?
boost is now the #1 failure reason in the autobuilders, so it is
becoming important to fix it soon.

Thanks!

Thomas

On Sat, 14 Jul 2018 23:05:47 +0200, Thomas Petazzoni wrote:
> Hello Fabrice,
> 
> On Fri, 13 Jul 2018 19:30:26 +0200, Fabrice Fontaine wrote:
> > When gcc has bug 64735, lock-free atomic ints are not supported:
> >  - lockfree boost::atomic_flag : no
> > 
> > As a result, boost thread needs boost atomic:
> > output/host/usr/bin/nios2-linux-readelf -d output/staging/usr/lib/libboost_thread.so
> > 
> > Dynamic section at offset 0x2cee0 contains 32 entries:
> >   Tag        Type                         Name/Value
> >  0x00000001 (NEEDED)                     Shared library: [libboost_system.so.1.67.0]
> >  0x00000001 (NEEDED)                     Shared library: [libboost_atomic.so.1.67.0]
> > 
> > Fixes:
> >  - http://autobuild.buildroot.net/results/5a7db292f1365f27e32695527701d5b827f60092
> >  - http://autobuild.buildroot.net/results/413dff87f5329d3c5180167a8711cdedea5dec67
> >  - http://autobuild.buildroot.net/results/a7eb4cbcdbd9412c344f45336dec58c82e84dab9
> > 
> > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>  
> 
> You'll probably find me annoying, but I'd like to have more details on
> how this is related to BR2_TOOLCHAIN_HAS_GCC_BUG_64735.
> 
> I looked into the Boost build system a bit, and here is what I
> collected.
> 
> In libs/thread/build/Jamfile.v2, there is the following snippet:
> 
>         if ! [ configure.builds has_atomic_flag_lockfree 
>             : $(properties) : "lockfree boost::atomic_flag" ]  { 
>            result += <library>/boost/atomic//boost_atomic ; 
>         } 
> 
> So, the boost_atomic library gets added to the build if
> has_atomic_flag_lockfree isn't set. This macro is set by this line in
> the same file:
> 
> exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ;
> 
> So presumably, it builds has_atomic_flag_lockfree_test.cpp, and
> depending on that decides if atomic_flag_lockfree is available or not.
> This ./libs/thread/build/has_atomic_flag_lockfree_test.cpp file contains:
> 
> 
> #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;
> }
> 
> So basically, it tests if BOOST_ATOMIC_FLAG_LOCK_FREE is non-zero. And
> then, things get crazy, because the definition of
> BOOST_ATOMIC_FLAG_LOCK_FREE depends on lots of other macros.
> 
> But to me, there is no evidence that this is related to gcc bug 64735.
> 
> To illustrate this, you can build the following defconfig. It uses a
> gcc 8.x NIOS2 toolchain, which is not affected by
> BR2_TOOLCHAIN_HAS_GCC_BUG_64735, and still libboost_thread implies
> building libboost_atomic. Therefore, the problem is not related to
> BR2_TOOLCHAIN_HAS_GCC_BUG_64735 :-/
> 
> BR2_nios2=y
> BR2_TOOLCHAIN_EXTERNAL=y
> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
> BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--bleeding-edge-2018.06-1.tar.bz2"
> BR2_TOOLCHAIN_EXTERNAL_GCC_8=y
> BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y
> BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
> BR2_TOOLCHAIN_EXTERNAL_CXX=y
> BR2_INIT_NONE=y
> BR2_SYSTEM_BIN_SH_NONE=y
> # BR2_PACKAGE_BUSYBOX is not set
> BR2_PACKAGE_BOOST=y
> BR2_PACKAGE_BOOST_THREAD=y
> # BR2_TARGET_ROOTFS_TAR is not set
> 
> Best regads,
> 
> Thomas



-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2018-07-28 20:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-13 17:30 [Buildroot] [PATCH 1/1] boost: thread needs atomic if GCC has bug 64735 Fabrice Fontaine
2018-07-14 21:05 ` Thomas Petazzoni
2018-07-28 20:53   ` Thomas Petazzoni [this message]
2018-08-12 16:26     ` Fabrice Fontaine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180728225305.62561b58@windsurf \
    --to=thomas.petazzoni@bootlin.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.