Le 2013-05-14 13:38, Simon Marchi a écrit : > On 14 May 2013 08:37, Mathieu Desnoyers <[email protected]> > wrote: >> * Mathieu Desnoyers ([email protected]) wrote: >>> * Alexandre Montplaisir ([email protected]) wrote: >>>> On 13-05-11 10:59 PM, Mathieu Desnoyers wrote: >>>>> * Francis Giraldeau ([email protected]) wrote: >>>>>> Libraries must be specified after the binary target. >>>>> merged, thanks! >>>>> >>>>> Mathieu >>>> This seems to have broken the daily PPA packages: >>>> https://launchpadlibrarian.net/139804087/buildlog_ubuntu-saucy-amd64.lttng-ust_2.2~pre-0%2Bbzr1574%2Bpack37%2B201305131247~saucy1_FAILEDTOBUILD.txt.gz >>>> >>>> That package has no particular patches. If I build it locally from >>>> source it builds fine, but if I build the package locally (with >>>> dpkg-buildpackage), I get the same error. It could be related to the >>>> --as-needed problem we've had before... >>> Francis, can you explain why your change was needed in the first place ? >> Hrm, actually, these patches are wrong. > > I believe these patches are correct. > >> commit 725e63c5194bfdcde0a2a3507aca156ba36cf49f for instance: >> >> "Libraries must be specified after the binary target." >> >> demo: demo.o >> - $(CC) -o $@ $(LIBS) $^ >> + $(CC) -o $@ $^ $(LIBS) >> >> the binary target here is "$@". >> >> $^ is the source file name (demo.c). >> >> this patch moves the source file name prior to the libraries, which is >> incorrect (ref: gcc(1)). The input files should appear last. >> >> So it breaks builds where $(LIBS) is non-empty. > Actually, $^ here is "demo.o", not "demo. Also, the libs should appear > after the objects on the command line. See the "-l" section in > http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html. On most setup > this doesn't matter, since -Wl,--no-as-needed was the default pretty > much everywhere. Ubuntu decided to use -Wl,--as-needed to avoid > unnecessary dependencies, so the order becomes important. If you try > to manual build on a recent Ubuntu you will get undefined references > to dlopen and such. So this patch is good. > > If you read carefully the log sent by Alexandre, you see that it is > when building the shared libs in this directory > (lttng-ust-provider-ust-tests-demo.so) that the build fails. I don't > know why it fails, but Alexandre hinted that passing "-fPIE -pie" to > build a shared library is weird (it is usually -fPIC -pic). I am not > sure where that comes from. This behaviour only happens when building > the package, not when building manually.
It seems quite right. Here is what happens with prior library order: $ cd lttng-ust/doc/examples/demo $ make gcc -o demo -ldl demo.o demo.o: In function `__tracepoint__init_urcu_sym': demo.c:(.text+0x20): undefined reference to `dlsym' By inverting library order as specified in patches, the compilation succeeds: $ make gcc -o demo demo.o -ldl So, reverting the patches will break the build. We should look at the other problem related to packaging and fix it. Thanks, Francis
smime.p7s
Description: Signature cryptographique S/MIME
_______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
