From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnout Vandecappelle Date: Sat, 18 Mar 2017 17:19:59 +0100 Subject: [Buildroot] [autobuild.buildroot.net] Build results for 2017-03-17 In-Reply-To: <20170318160225.GL23128@waldemar-brodkorb.de> References: <20170318072841.AF04B20775@mail.free-electrons.com> <124f5fc5-6307-f72f-f1be-8f2139dffced@mind.be> <20170318160225.GL23128@waldemar-brodkorb.de> Message-ID: <39f7b32b-2620-70a4-b9b0-d208a00628f4@mind.be> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net On 18-03-17 17:02, Waldemar Brodkorb wrote: > Hi Arnout, > Arnout Vandecappelle wrote, > >> >> >> On 18-03-17 08:28, Thomas Petazzoni wrote: >>> microblazeel | nfs-utils-1.3.3 | NOK | http://autobuild.buildroot.net/results/240cfb0497b1dd7b5b33b8f64635cca435d49f05 >> >> I looked at this one and I'm a bit stumped. This is the error: >> .../sysroot/usr/lib/libc.a(clnt_simple.os): In function `callrpc': >> (.text+0x0): multiple definition of `callrpc' >> .../sysroot/usr/lib/libtirpc.a(libtirpc_la-rpc_soc.o):(.text+0x784): first >> defined here >> (and many more like that). >> >> It's a bit weird that this object file from the C library even gets linked in. >> The Map file says: >> >> .../sysroot/usr/lib/libc.a(rpc_thread.os) >> .../sysroot/usr/lib/libc.a(cancel.os) (__rpc_thread_destroy) >> (skipping a few levels of indirection here). >> >> So somehow the pthread library is pulling in the RPC support from uClibc, which >> obviously conflicts with tirpc. > > But if BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y is active, isn't uClibc-ng > build with RPC support? If this is the case, you end up with two RPC > implememtations. That should be handled by Buildroot. > > Do you have support for use either libtirpc or uClibc-ng internal > RPC support? rpcbind need libtirpc for RPC support, it can't use the toolchain RPC for some reason. That's why both implementations are there. Normally it shouldn't be an issue to have two implementations. Since the one from libtirpc is linked in before libc is linked in, the one from libc isn't going to be used. This works for musl AFAICS. The problem is that with uClibc-ng on microblaze, RPC from libc is linked in unconditionally (from pthreads, AFAICS). Check e.g. busybox, it has rpc_thread.os, rpc_commondata.os, rpc_prot.os and rpc_dtablesize.os. uClibc-ng on ARC, for example, doesn't seem to have this. So it's the __rpc_thread_destroy in cancel.os that seems to be the problem here. Regards, Arnout -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF