Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 10/21] libtorrent: use the proper BR2_TOOLCHAIN_HAS_SYNC_x symbols
Date: Mon, 25 Jan 2016 23:14:40 +0100	[thread overview]
Message-ID: <20160125221440.GN3386@free.fr> (raw)
In-Reply-To: <20160125230728.6b2f577a@free-electrons.com>

thomas, All,

On 2016-01-25 23:07 +0100, Thomas Petazzoni spake thusly:
> On Mon, 25 Jan 2016 22:45:29 +0100, Yann E. MORIN wrote:
> 
> > On 2016-01-25 00:07 +0100, Thomas Petazzoni spake thusly:
> > > libtorrent uses 1 bytes and 4 bytes __sync built-ins, so let's use the
> > > appropriate BR2_TOOLCHAIN_HAS_SYNC_x symbols instead of
> > > BR2_ARCH_HAS_ATOMICS. The rtorrent package, which is a reverse
> > > dependency of libtorrent, gets fixed as well.
> > > 
> > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > > ---
> > >  package/libtorrent/Config.in | 4 ++--
> > >  package/rtorrent/Config.in   | 4 ++--
> > >  2 files changed, 4 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/package/libtorrent/Config.in b/package/libtorrent/Config.in
> > > index 17a1f23..4787f9c 100644
> > > --- a/package/libtorrent/Config.in
> > > +++ b/package/libtorrent/Config.in
> > > @@ -2,7 +2,7 @@ config BR2_PACKAGE_LIBTORRENT
> > >  	bool "libtorrent"
> > >  	depends on BR2_INSTALL_LIBSTDCPP
> > >  	depends on BR2_TOOLCHAIN_HAS_THREADS
> > > -	depends on BR2_ARCH_HAS_ATOMICS
> > > +	depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4
> > 
> > The original build failure that prompted adding the atomics dependency
> > only reported errors about the __sunc_*_4() functions, but libtorrent
> > has been bumped sinc ethen.
> > 
> > I was not able to easily reproduce a failure so far, but I will try with
> > an arc toolchain (which is lacking __sync_*_1() functions...
> 
> Beware with ARC: you need to have a toolchain with BR2_ARC_ATOMIC_EXT
> disabled, otherwise the __sync built-ins are provided. And by default,
> BR2_ARC_ATOMIC_EXT is enabled.

Yep, I know and the toolchain I built does not have them.

Thanks for the hint anyway. :-)

> Regarding libtorrent, if you want to test:
> 
>  1/ Remove the dependency on BR2_TOOLCHAIN_HAS_SYNC_<x> (or
>     BR2_ARCH_HAS_ATOMICS in the current Buildroot)

What I did.

>  2/ Build it with the br-sparc-glibc.config pointed above.

Doing so for ARC...

>  3/ Test the following:
> 
> $ echo "int main(void) { return 0; }" >> foo.c
> $ ./output/host/usr/bin/sparc-linux-gcc -o foo foo.c -ltorrent -lpthread
> 
> You get:
> 
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_sub_and_fetch_4'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_bool_compare_and_swap_1'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_or_and_fetch_4'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_bool_compare_and_swap_4'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_add_and_fetch_4'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_fetch_and_or_4'
> /home/thomas/projets/buildroot/output/host/usr/sparc-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_fetch_and_and_4'
> collect2: error: ld returned 1 exit status
> 
> See the __sync_bool_compare_and_swap_1() ?
> 
> And now, you can test it with a Microblaze toolchain, which implements
> the 4-byte __sync builtins, but not the 1-byte builtins. And you get:
> 
> $ ./output/host/usr/bin/microblazeel-linux-gcc -o foo foo.c -ltorrent -lpthread
> /home/thomas/projets/buildroot/output/host/usr/microblazeel-buildroot-linux-gnu/sysroot/usr/lib/libtorrent.so: undefined reference to `__sync_bool_compare_and_swap_1'
> collect2: error: ld returned 1 exit status

Ah, I see my tests are no longer needed! Thanks for that!

(Note: I was not trying to turn your patch down, I was just trying to
confirm the _1 stuff).

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2016-01-25 22:14 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-24 23:07 [Buildroot] [PATCH 00/21] Rework atomic handling Thomas Petazzoni
2016-01-24 23:07 ` [Buildroot] [PATCH 01/21] libftdi: C++ bindings need boost Thomas Petazzoni
2016-01-25 17:04   ` Yann E. MORIN
2016-01-25 20:04     ` Thomas Petazzoni
2016-01-24 23:07 ` [Buildroot] [PATCH 02/21] libftdi: remove BR2_ARCH_HAS_ATOMICS dependency Thomas Petazzoni
2016-01-25 17:15   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 03/21] toolchain: add BR2_TOOLCHAIN_HAS_SYNC_x hidden booleans Thomas Petazzoni
2016-01-25 18:27   ` Yann E. MORIN
2016-01-27 21:46     ` Thomas Petazzoni
2016-01-27 22:47       ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 04/21] docs/manual: document usage of BR2_TOOLCHAIN_HAS_SYNC_x Thomas Petazzoni
2016-01-25 18:38   ` Yann E. MORIN
2016-01-25 20:07     ` Thomas Petazzoni
2016-01-24 23:07 ` [Buildroot] [PATCH 05/21] icu: remove BR2_ARCH_HAS_ATOMICS dependency Thomas Petazzoni
2016-01-25 18:42   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 06/21] json-c: needs __sync_val_compare_and_swap_4 Thomas Petazzoni
2016-01-25 18:47   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 07/21] pulseaudio: remove BR2_ARCH_HAS_ATOMICS dependency Thomas Petazzoni
2016-01-25 18:52   ` Yann E. MORIN
2016-01-27 21:56     ` Thomas Petazzoni
2016-01-27 22:51       ` Yann E. MORIN
2016-01-27 23:01         ` Thomas Petazzoni
2016-01-24 23:07 ` [Buildroot] [PATCH 08/21] apache, apr: fix atomic handling Thomas Petazzoni
2016-01-25 20:59   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 09/21] jack2: use the proper BR2_TOOLCHAIN_HAS_SYNC_x symbol Thomas Petazzoni
2016-01-25 21:12   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 10/21] libtorrent: use the proper BR2_TOOLCHAIN_HAS_SYNC_x symbols Thomas Petazzoni
2016-01-25 21:45   ` Yann E. MORIN
2016-01-25 22:07     ` Thomas Petazzoni
2016-01-25 22:14       ` Yann E. MORIN [this message]
2016-01-25 22:22         ` Thomas Petazzoni
2016-01-26 22:13   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 11/21] gauche: disable on SPARC(64), remove atomics dependency Thomas Petazzoni
2016-01-25 21:52   ` Yann E. MORIN
2016-01-24 23:07 ` [Buildroot] [PATCH 12/21] cairo, harfbuzz: rework atomic dependencies Thomas Petazzoni
2016-01-24 23:07 ` [Buildroot] [PATCH 13/21] openocd: remove BR2_ARCH_HAS_ATOMICS dependency Thomas Petazzoni
2016-01-25 23:05   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 14/21] squid: rework atomic handling Thomas Petazzoni
2016-01-25 22:53   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 15/21] thrift: remove BR2_ARCH_HAS_ATOMICS dependency Thomas Petazzoni
2016-01-26 22:31   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 16/21] msgpack: rework " Thomas Petazzoni
2016-01-26 22:17   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 17/21] arch: remove BR2_ARCH_HAS_ATOMICS option Thomas Petazzoni
2016-01-26 22:22   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 18/21] glog: fix atomic built-in problem Thomas Petazzoni
2016-01-26 22:25   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 19/21] openal: add missing BR2_TOOLCHAIN_HAS_SYNC_4 dependency Thomas Petazzoni
2016-01-26 22:32   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 20/21] freerdp: " Thomas Petazzoni
2016-01-26 22:33   ` Yann E. MORIN
2016-01-24 23:08 ` [Buildroot] [PATCH 21/21] neard: " Thomas Petazzoni
2016-01-26 22:35   ` Yann E. MORIN
2016-01-26 20:28 ` [Buildroot] [PATCH 00/21] Rework atomic handling Thomas Petazzoni

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=20160125221440.GN3386@free.fr \
    --to=yann.morin.1998@free.fr \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox