Hi Noel,
On Mon, Mar 12, 2012 at 11:10:20AM +0200, Noel Grandin wrote:
I'm curious - what's with the linking warnings:
[ WARN ] !!!
[ WARN ] !!! smoketest/smoketest is linked in by
Library/libsmoketest.so CppunitTest/libtest_smoketest.so
[ WARN ] !!!
They seem to have been there for as long as I've been building
LibreOffice (the last 4 months) - are they indicative of an actual
problem?
They are do not have to be a deadly problem, but they can introduce very hard
to debug problems. As we set stuff like compile flags and include paths on the
linktarget (aka the library) and in the above case the object file is linked in
by two libraries, the flags it is compiled with are actually nondeterministic.
That is Very Bad(tm)!
So the smoketest/smoketest.cxx will either be compiled with the CFLAGS of
Library/libsmoketest.so or with those of CppunitTest/libtest_smoketest.so --
actually it can be compiled different on different machines with the same code.
It can even be compiled different on the same machine! So again: This is Very
Bad(tm) and we should probably never ever have let that happen.
Now it might be possible that the one doing the initial migration carefully
checked that both libs are compiled exactly the same on all platforms (I highly
doubt that), but even then this totally unproof against future changes. Someone
might innocently add a define to the compile flags of one library and create a
terribly hard to reproduce heisenbug.
So this has to go, it should never have been there in the first place. How can
this be removed? There are two possibilities:
a) create a smoketest/smoketest_libtest_smoketest.cxx with this content:
#include "smoketest.cxx"
and then use that file instead of smoketest/smoketest.cxx in
CppunitTest/libtest_smoketest. That way, the object gets build twice (with
possibly different flags and defines) and everything is fine.
Ugly, but does the job.
b) create a static library smoketest and add the smoketest/smoketest.cxx to it.
Now instead link that static library into both of the dynamic ones and
everything is fine.
I just created a EasyHack for this:
https://bugs.freedesktop.org/show_bug.cgi?id=47246
Best,
Bjoern
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.