* [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread
@ 2014-06-30 16:28 Vicente Olivert Riera
2014-06-30 16:49 ` Baruch Siach
0 siblings, 1 reply; 5+ messages in thread
From: Vicente Olivert Riera @ 2014-06-30 16:28 UTC (permalink / raw)
To: buildroot
This fixes a problem in other packages when they link against dbus. For
instance, with the dnsmasq package:
/buildroot/output/host/usr/bin/mipsel-ctng-linux-uclibc-gcc --static
-lidn -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o
dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o
tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o
radv.o slaac.o auth.o ipset.o domain.o dnssec.o blockdata.o
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-ldbus-1 -lpthread
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-lidn -liconv
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-llua -lm -Wl,-Bstatic -lhogweed
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-lnettle -lgmp -Wl,-Bdynamic -Wl,-Bstatic -lgmp -Wl,-Bdynamic
/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a(init.os):
In function `__pthread_initialize_minimal_internal':
init.c:(.text+0x26c): undefined reference to `__libc_setup_tls'
collect2: error: ld returned 1 exit status
make[2]: *** [dnsmasq] Error 1
make[2]: Leaving directory
`/buildroot/output/build/dnsmasq-2.71/src'
Fixes:
http://autobuild.buildroot.net/results/7cd/7cdab3b6f74dbfde965300a51e58a377ba30602b/
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
package/dbus/dbus.mk | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/package/dbus/dbus.mk b/package/dbus/dbus.mk
index fc446b1..0c8fcf3 100644
--- a/package/dbus/dbus.mk
+++ b/package/dbus/dbus.mk
@@ -35,7 +35,7 @@ define DBUS_USERS
endef
ifeq ($(BR2_PREFER_STATIC_LIB),y)
-DBUS_CONF_OPT += LIBS='-lpthread'
+DBUS_CONF_OPT += LIBS='-pthread'
endif
ifeq ($(BR2_microblaze),y)
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread
2014-06-30 16:28 [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread Vicente Olivert Riera
@ 2014-06-30 16:49 ` Baruch Siach
2014-06-30 16:54 ` Vicente Olivert Riera
0 siblings, 1 reply; 5+ messages in thread
From: Baruch Siach @ 2014-06-30 16:49 UTC (permalink / raw)
To: buildroot
Hi Vicente,
On Mon, Jun 30, 2014 at 05:28:12PM +0100, Vicente Olivert Riera wrote:
> This fixes a problem in other packages when they link against dbus. For
> instance, with the dnsmasq package:
>
> /buildroot/output/host/usr/bin/mipsel-ctng-linux-uclibc-gcc --static
> -lidn -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o
> dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o
> tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o
> radv.o slaac.o auth.o ipset.o domain.o dnssec.o blockdata.o
> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
> -ldbus-1 -lpthread
> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
> -lidn -liconv
> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
> -llua -lm -Wl,-Bstatic -lhogweed
> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
> -lnettle -lgmp -Wl,-Bdynamic -Wl,-Bstatic -lgmp -Wl,-Bdynamic
> /buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a(init.os):
> In function `__pthread_initialize_minimal_internal':
> init.c:(.text+0x26c): undefined reference to `__libc_setup_tls'
> collect2: error: ld returned 1 exit status
> make[2]: *** [dnsmasq] Error 1
> make[2]: Leaving directory
> `/buildroot/output/build/dnsmasq-2.71/src'
>
> Fixes:
> http://autobuild.buildroot.net/results/7cd/7cdab3b6f74dbfde965300a51e58a377ba30602b/
>
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
> package/dbus/dbus.mk | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/package/dbus/dbus.mk b/package/dbus/dbus.mk
> index fc446b1..0c8fcf3 100644
> --- a/package/dbus/dbus.mk
> +++ b/package/dbus/dbus.mk
> @@ -35,7 +35,7 @@ define DBUS_USERS
> endef
>
> ifeq ($(BR2_PREFER_STATIC_LIB),y)
> -DBUS_CONF_OPT += LIBS='-lpthread'
> +DBUS_CONF_OPT += LIBS='-pthread'
Can you explain how this change solves the build failure?
baruch
> endif
>
> ifeq ($(BR2_microblaze),y)
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
^ permalink raw reply [flat|nested] 5+ messages in thread* [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread
2014-06-30 16:49 ` Baruch Siach
@ 2014-06-30 16:54 ` Vicente Olivert Riera
2014-06-30 18:06 ` Thomas Petazzoni
0 siblings, 1 reply; 5+ messages in thread
From: Vicente Olivert Riera @ 2014-06-30 16:54 UTC (permalink / raw)
To: buildroot
On 06/30/2014 05:49 PM, Baruch Siach wrote:
> Hi Vicente,
>
> On Mon, Jun 30, 2014 at 05:28:12PM +0100, Vicente Olivert Riera wrote:
>> This fixes a problem in other packages when they link against dbus. For
>> instance, with the dnsmasq package:
>>
>> /buildroot/output/host/usr/bin/mipsel-ctng-linux-uclibc-gcc --static
>> -lidn -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o
>> dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o
>> tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o
>> radv.o slaac.o auth.o ipset.o domain.o dnssec.o blockdata.o
>> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
>> -ldbus-1 -lpthread
>> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
>> -lidn -liconv
>> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
>> -llua -lm -Wl,-Bstatic -lhogweed
>> -L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
>> -lnettle -lgmp -Wl,-Bdynamic -Wl,-Bstatic -lgmp -Wl,-Bdynamic
>> /buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a(init.os):
>> In function `__pthread_initialize_minimal_internal':
>> init.c:(.text+0x26c): undefined reference to `__libc_setup_tls'
>> collect2: error: ld returned 1 exit status
>> make[2]: *** [dnsmasq] Error 1
>> make[2]: Leaving directory
>> `/buildroot/output/build/dnsmasq-2.71/src'
>>
>> Fixes:
>> http://autobuild.buildroot.net/results/7cd/7cdab3b6f74dbfde965300a51e58a377ba30602b/
>>
>> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
>> ---
>> package/dbus/dbus.mk | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/package/dbus/dbus.mk b/package/dbus/dbus.mk
>> index fc446b1..0c8fcf3 100644
>> --- a/package/dbus/dbus.mk
>> +++ b/package/dbus/dbus.mk
>> @@ -35,7 +35,7 @@ define DBUS_USERS
>> endef
>>
>> ifeq ($(BR2_PREFER_STATIC_LIB),y)
>> -DBUS_CONF_OPT += LIBS='-lpthread'
>> +DBUS_CONF_OPT += LIBS='-pthread'
>
> Can you explain how this change solves the build failure?
Yes. When dnsmasq tries to link against dbus it checks the dbus
pkgconfig file to obtain the LIBS that it need to pass to the linker. In
the dbus .pc file you have "-ldbus-1 -lpthread" because you used
-lpthread when building dbus. If you use -pthread when you build dbus,
then you will have -pthread in the dbus .pc file as well.
> baruch
>
>> endif
>>
>> ifeq ($(BR2_microblaze),y)
>
--
Vincent
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread
2014-06-30 16:54 ` Vicente Olivert Riera
@ 2014-06-30 18:06 ` Thomas Petazzoni
2014-06-30 18:46 ` Baruch Siach
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2014-06-30 18:06 UTC (permalink / raw)
To: buildroot
Dear Vicente Olivert Riera,
On Mon, 30 Jun 2014 17:54:27 +0100, Vicente Olivert Riera wrote:
> >> ifeq ($(BR2_PREFER_STATIC_LIB),y)
> >> -DBUS_CONF_OPT += LIBS='-lpthread'
> >> +DBUS_CONF_OPT += LIBS='-pthread'
> >
> > Can you explain how this change solves the build failure?
>
> Yes. When dnsmasq tries to link against dbus it checks the dbus
> pkgconfig file to obtain the LIBS that it need to pass to the linker. In
> the dbus .pc file you have "-ldbus-1 -lpthread" because you used
> -lpthread when building dbus. If you use -pthread when you build dbus,
> then you will have -pthread in the dbus .pc file as well.
I think it'd be good to have an updated version of the patch that gives
this explanation + an explanation of the difference between -pthread
and -lpthread and how this difference solves the problem.
Also, would it be possible to get this bug fixed in upstream DBus?
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread
2014-06-30 18:06 ` Thomas Petazzoni
@ 2014-06-30 18:46 ` Baruch Siach
0 siblings, 0 replies; 5+ messages in thread
From: Baruch Siach @ 2014-06-30 18:46 UTC (permalink / raw)
To: buildroot
Hi Thomas,
On Mon, Jun 30, 2014 at 08:06:16PM +0200, Thomas Petazzoni wrote:
> On Mon, 30 Jun 2014 17:54:27 +0100, Vicente Olivert Riera wrote:
>
> > >> ifeq ($(BR2_PREFER_STATIC_LIB),y)
> > >> -DBUS_CONF_OPT += LIBS='-lpthread'
> > >> +DBUS_CONF_OPT += LIBS='-pthread'
> > >
> > > Can you explain how this change solves the build failure?
> >
> > Yes. When dnsmasq tries to link against dbus it checks the dbus
> > pkgconfig file to obtain the LIBS that it need to pass to the linker. In
> > the dbus .pc file you have "-ldbus-1 -lpthread" because you used
> > -lpthread when building dbus. If you use -pthread when you build dbus,
> > then you will have -pthread in the dbus .pc file as well.
>
> I think it'd be good to have an updated version of the patch that gives
> this explanation + an explanation of the difference between -pthread
> and -lpthread and how this difference solves the problem.
Getting a definite answer on this (-lpthread vs -pthread) is not easy, it
seems. According to
http://stackoverflow.com/questions/23250863/difference-between-pthread-and-lpthread-while-compiling
-pthread also defines _REENTRANT and __USE_REENTRANT. I guess that this is
related to initialization of thread local storage (TLS) at glibc.
baruch
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-06-30 18:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-30 16:28 [Buildroot] [PATCH] dbus: use -pthread instead of -lpthread Vicente Olivert Riera
2014-06-30 16:49 ` Baruch Siach
2014-06-30 16:54 ` Vicente Olivert Riera
2014-06-30 18:06 ` Thomas Petazzoni
2014-06-30 18:46 ` Baruch Siach
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox