Re: [pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
'Twas brillig, and Luke Yelavich at 15/10/10 04:31 did gyre and gimble: From: Luke Yelavich luke.yelav...@canonical.com When building pulseaudio master using gcc 4.5.2 and binutils 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing symbols. This patch explicitly links more pulseaudio libraries to satisfy the linker. When you say snapshot do you mean master or stable-queue? I'm a bit puzzled by this as I don't seem to have the problem here (I'm a point behind on the gcc tho' which could explain it). As PA already has an internal circular dep you cannot use --no-undefined or --as-needed so it's already fairly overlinked internally hence why these issues don't always crop up so commonly. Indeed doing ldd on a paplay (built as part of pulseaudio and without no-undefined or as-needed) vs. a normal pulseaudio client e.g. mplayer (which is compiled with no-undefined and as-needed) you see an interesting story: [co...@jimmy ~]$ ldd `which paplay` | grep pulse libpulse.so.0 = /usr/lib64/libpulse.so.0 (0x7fdf72d8c000) libpulsecommon-0.9.21.so = /usr/lib64/libpulsecommon-0.9.21.so (0x7fdf72b3b000) [co...@jimmy ~]$ ldd `which mplayer` | grep pulse libpulse.so.0 = /usr/lib64/libpulse.so.0 (0x7f5f55c44000) libpulsecommon-0.9.21.so = /usr/lib64/libpulsecommon-0.9.21.so (0x7f5f4f94f000) Both appear to be quite similar right? But compare them to this: [co...@jimmy ~]$ objdump -p `which paplay` | grep pulse NEEDED libpulse.so.0 NEEDED libpulsecommon-0.9.21.so required from libpulse.so.0: [co...@jimmy ~]$ objdump -p `which mplayer` | grep pulse NEEDED libpulse.so.0 required from libpulse.so.0: This clearly shows that paplay is overlinked. Distros which do not much care about trying to prevent overlinking (I'm thinking Fedora... but not confirmed personally - just going on what I've been told in the past) will have to rebuild a whole lot more packages when libpulsecommon-0.9.21.so changes to 0.9,22+ This is likely not relevant to your patch, but I'm still curious as to why your problem is cropping up now. I guess it could easily be related to gcc point release but I wouldn't have expected such an invasive change would have been made deliberately. Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/] ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
On Fri, Oct 15, 2010 at 06:58:31PM EST, Colin Guthrie wrote: 'Twas brillig, and Luke Yelavich at 15/10/10 04:31 did gyre and gimble: From: Luke Yelavich luke.yelav...@canonical.com When building pulseaudio master using gcc 4.5.2 and binutils 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing symbols. This patch explicitly links more pulseaudio libraries to satisfy the linker. When you say snapshot do you mean master or stable-queue? The snapshot I am referring to is the binutils snapshot. The next Ubuntu release just started in development, and I am prepping a pulseaudio package for it, so I am building against the new toolchain, whigh is gcc 4.5 and the snapshot of binutils indicated. Snip Distros which do not much care about trying to prevent overlinking (I'm thinking Fedora... but not confirmed personally - just going on what I've been told in the past) will have to rebuild a whole lot more packages when libpulsecommon-0.9.21.so changes to 0.9,22+ Well, as you can see, I only encountered this with some src/test code. I should also note I was using the debian/Ubuntu build process to build packages, which would have introduced extra flags, I can show you the compile/lin flags used if you would like. Luke ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
'Twas brillig, and Luke Yelavich at 15/10/10 09:03 did gyre and gimble: On Fri, Oct 15, 2010 at 06:58:31PM EST, Colin Guthrie wrote: 'Twas brillig, and Luke Yelavich at 15/10/10 04:31 did gyre and gimble: From: Luke Yelavich luke.yelav...@canonical.com When building pulseaudio master using gcc 4.5.2 and binutils 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing symbols. This patch explicitly links more pulseaudio libraries to satisfy the linker. When you say snapshot do you mean master or stable-queue? The snapshot I am referring to is the binutils snapshot. The next Ubuntu release just started in development, and I am prepping a pulseaudio package for it, so I am building against the new toolchain, whigh is gcc 4.5 and the snapshot of binutils indicated. Ahh right, sorry, I must have misread that as it's quite clear on second read. Snip Distros which do not much care about trying to prevent overlinking (I'm thinking Fedora... but not confirmed personally - just going on what I've been told in the past) will have to rebuild a whole lot more packages when libpulsecommon-0.9.21.so changes to 0.9,22+ Well, as you can see, I only encountered this with some src/test code. I should also note I was using the debian/Ubuntu build process to build packages, which would have introduced extra flags, I can show you the compile/lin flags used if you would like. It might be useful, but then again, I'd expect that if as-needed and no-undefined were used there would be link failures prior to the tests being built (it bombs out much earlier for me when I do that). So the link flags would be interesting to see but unless they are different flags for the tests than for the main build then I'll be a bit confused But then again I make no claims to really understand linking fully :D Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/] ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
On Fri, Oct 15, 2010 at 08:10:20PM EST, Colin Guthrie wrote: It might be useful, but then again, I'd expect that if as-needed and no-undefined were used there would be link failures prior to the tests being built (it bombs out much earlier for me when I do that). So the link flags would be interesting to see but unless they are different flags for the tests than for the main build then I'll be a bit confused But then again I make no claims to really understand linking fully :D Here is a document from Debian explaining whats going on. http://wiki.debian.org/ToolChain/DSOLinking Luke ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
From: Luke Yelavich luke.yelav...@canonical.com When building pulseaudio master using gcc 4.5.2 and binutils 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing symbols. This patch explicitly links more pulseaudio libraries to satisfy the linker. Signed-off-by: Luke Yelavich luke.yelav...@canonical.com --- src/Makefile.am | 36 ++-- 1 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 4061b3c..df268ee 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -356,7 +356,7 @@ endif mainloop_test_SOURCES = tests/mainloop-test.c mainloop_test_CFLAGS = $(AM_CFLAGS) -mainloop_test_LDADD = $(AM_LDADD) libpulse.la +mainloop_test_LDADD = $(AM_LDADD) libpulse.la libpulsecomm...@pa_majorminormicro@.la mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) thread_mainloop_test_SOURCES = tests/thread-mainloop-test.c @@ -366,7 +366,7 @@ thread_mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) utf8_test_SOURCES = tests/utf8-test.c utf8_test_CFLAGS = $(AM_CFLAGS) -utf8_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +utf8_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la utf8_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) get_binary_name_test_SOURCES = tests/get-binary-name-test.c @@ -386,22 +386,22 @@ hook_list_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) memblock_test_SOURCES = tests/memblock-test.c memblock_test_CFLAGS = $(AM_CFLAGS) -memblock_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +memblock_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la memblock_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) thread_test_SOURCES = tests/thread-test.c thread_test_CFLAGS = $(AM_CFLAGS) -thread_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +thread_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la thread_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) once_test_SOURCES = tests/once-test.c once_test_CFLAGS = $(AM_CFLAGS) -once_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +once_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la once_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) flist_test_SOURCES = tests/flist-test.c flist_test_CFLAGS = $(AM_CFLAGS) -flist_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +flist_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la flist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) asyncq_test_SOURCES = tests/asyncq-test.c @@ -441,7 +441,7 @@ parec_simple_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) strlist_test_SOURCES = tests/strlist-test.c strlist_test_CFLAGS = $(AM_CFLAGS) -strlist_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +strlist_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la strlist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) close_test_SOURCES = tests/close-test.c @@ -451,7 +451,7 @@ close_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) voltest_SOURCES = tests/voltest.c voltest_CFLAGS = $(AM_CFLAGS) -voltest_LDADD = $(AM_LDADD) libpulse.la +voltest_LDADD = $(AM_LDADD) libpulse.la libpulsecomm...@pa_majorminormicro@.la voltest_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) vector_test_SOURCES = tests/vector-test.c @@ -466,12 +466,12 @@ channelmap_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) cpulimit_test_SOURCES = tests/cpulimit-test.c daemon/cpulimit.c daemon/cpulimit.h cpulimit_test_CFLAGS = $(AM_CFLAGS) -cpulimit_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +cpulimit_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la cpulimit_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) cpulimit_test2_SOURCES = tests/cpulimit-test.c daemon/cpulimit.c daemon/cpulimit.h cpulimit_test2_CFLAGS = $(AM_CFLAGS) -DTEST2 -cpulimit_test2_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +cpulimit_test2_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la cpulimit_test2_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) mainloop_test_glib_SOURCES = $(mainloop_test_SOURCES) @@ -500,17 +500,17 @@ sig2str_test_CFLAGS = $(AM_CFLAGS) sig2str_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) resampler_test_SOURCES = tests/resampler-test.c
[pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries
From: Luke Yelavich luke.yelav...@canonical.com When building pulseaudio stable-queue using gcc 4.5.2 and binutils 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing symbols. This patch explicitly links more pulseaudio libraries to satisfy the linker. Signed-off-by: Luke Yelavich luke.yelav...@canonical.com --- src/Makefile.am | 34 +- 1 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 8dd5793..b130353 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -370,7 +370,7 @@ endif mainloop_test_SOURCES = tests/mainloop-test.c mainloop_test_CFLAGS = $(AM_CFLAGS) -mainloop_test_LDADD = $(AM_LDADD) libpulse.la +mainloop_test_LDADD = $(AM_LDADD) libpulse.la libpulsecomm...@pa_majorminormicro@.la mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) thread_mainloop_test_SOURCES = tests/thread-mainloop-test.c @@ -380,7 +380,7 @@ thread_mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) utf8_test_SOURCES = tests/utf8-test.c utf8_test_CFLAGS = $(AM_CFLAGS) -utf8_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +utf8_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la utf8_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) get_binary_name_test_SOURCES = tests/get-binary-name-test.c @@ -400,17 +400,17 @@ hook_list_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) memblock_test_SOURCES = tests/memblock-test.c memblock_test_CFLAGS = $(AM_CFLAGS) -memblock_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +memblock_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la memblock_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) thread_test_SOURCES = tests/thread-test.c thread_test_CFLAGS = $(AM_CFLAGS) -thread_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +thread_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la thread_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) flist_test_SOURCES = tests/flist-test.c flist_test_CFLAGS = $(AM_CFLAGS) -flist_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +flist_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la flist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) asyncq_test_SOURCES = tests/asyncq-test.c @@ -450,7 +450,7 @@ parec_simple_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) strlist_test_SOURCES = tests/strlist-test.c strlist_test_CFLAGS = $(AM_CFLAGS) -strlist_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +strlist_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la strlist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) close_test_SOURCES = tests/close-test.c @@ -460,7 +460,7 @@ close_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) voltest_SOURCES = tests/voltest.c voltest_CFLAGS = $(AM_CFLAGS) -voltest_LDADD = $(AM_LDADD) libpulse.la +voltest_LDADD = $(AM_LDADD) libpulse.la libpulsecomm...@pa_majorminormicro@.la voltest_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) vector_test_SOURCES = tests/vector-test.c @@ -475,12 +475,12 @@ channelmap_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) cpulimit_test_SOURCES = tests/cpulimit-test.c daemon/cpulimit.c daemon/cpulimit.h cpulimit_test_CFLAGS = $(AM_CFLAGS) -cpulimit_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +cpulimit_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la cpulimit_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) cpulimit_test2_SOURCES = tests/cpulimit-test.c daemon/cpulimit.c daemon/cpulimit.h cpulimit_test2_CFLAGS = $(AM_CFLAGS) -DTEST2 -cpulimit_test2_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +cpulimit_test2_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la cpulimit_test2_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) mainloop_test_glib_SOURCES = $(mainloop_test_SOURCES) @@ -509,17 +509,17 @@ sig2str_test_CFLAGS = $(AM_CFLAGS) sig2str_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) resampler_test_SOURCES = tests/resampler-test.c -resampler_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la +resampler_test_LDADD = $(AM_LDADD) libpulseco...@pa_majorminormicro@.la libpulsecomm...@pa_majorminormicro@.la libpulse.la resampler_test_CFLAGS = $(AM_CFLAGS) resampler_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) mix_test_SOURCES =