error during build of mork_helper, on illumos/xstreamos

Michael Stahl mstahl at redhat.com
Thu Feb 19 14:06:08 PST 2015


On 19.02.2015 19:13, Gabriele Bulfon wrote:
> *Da:* Gabriele Bulfon <gabriele.bulfon at sonicle.com>
> *A:* libreoffice at lists.freedesktop.org
> *Data:* 19 febbraio 2015 13.04.57 CET
> *Oggetto:* error during build of mork_helper, on illumos/xstreamos
>
>
S=/sources/sonicle/xstream-desktop-gate/components/libreoffice/libreoffice/libreoffice-4.4.0.3
>     && I=$S/instdir && W=$S/workdir && /usr/gcc/4.7/bin/g++
>     -Wl,-z,origin '-Wl,-rpath,$ORIGIN/../Library' -L$I/ure/lib
>     -L$I/program -L/usr/gcc/4.7/lib -L/lib -L/usr/lib -Wl,-z,combreloc
>     -L$W/LinkTarget/StaticLibrary -L$I/sdk/lib -L$I/ure/lib -L$I/program
>     -L$W/LinkTarget/Library
>     $W/CxxObject/connectivity/source/drivers/mork/mork_helper.o
>     -Wl,--start-group -lm -lnsl -lsocket -lstdc++ -Wl,--end-group
>     -Wl,-zrecord -luno_cppu -luno_cppuhelpergcc3 -lmorklo -luno_sal -o
>     $W/LinkTarget/Executable/mork_helper
>     Undefined first referenced
>     symbol in file
>     X11OpenGLDeviceInfo::isDeviceBlocked()
>
/sources/sonicle/xstream-desktop-gate/components/libreoffice/libreoffice/libreoffice-4.4.0.3/instdir/program/libvcllo.so
>     X11OpenGLDeviceInfo::~X11OpenGLDeviceInfo()
>
/sources/sonicle/xstream-desktop-gate/components/libreoffice/libreoffice/libreoffice-4.4.0.3/instdir/program/libvcllo.so
>     X11OpenGLDeviceInfo::X11OpenGLDeviceInfo()
>
/sources/sonicle/xstream-desktop-gate/components/libreoffice/libreoffice/libreoffice-4.4.0.3/instdir/program/libvcllo.so
>
>
>     Looks like some LO code is not built for some reason, leaving out
>     those X11OpenGLDeviceInfo functions?

this *should* have failed when linking libvcllo.so already, not when
linking an executable.

the reason why it did not is that solaris.mk is missing "-z defs" linker
flag, which fails the link in case of missing symbols.

see also: commit 5e9ffbb85ee548a2f31ed99834c13d6c4ec4d714 "solaris11:
#i117606#: solaris.mk: add -Bdirect -z defs to LDFLAGS"

i'm not sure if "-z defs" will work with gcc, maybe you need "-Wl,-z,defs".

i also don't remember what "-Bdirect" does, it's probably some
performance improvement, you could try to add it too.

perhaps there is some #ifdef or condition in vcl/Library_vcl.mk that
disables the OpenGL stuff on Solaris.

> Doing an ldd on the first so file, reveals something strange.
> 
> At the beginning it looks like libstdc++.so.6 is looked under
> /usr/sfw/lib: wrong, should be under /usr/gcc/4.7/lib, as stated during
> link via -L/usr/gcc/4.7/lib.

this could happen because:

1) there is a RPATH in one of the libraries above the libstdc++ line
(i.e. libvcllo.so) that points to /usr/sfw/lib

2) you have LD_LIBRARY_PATH set containing /usr/sfw/lib

3) you have LD_PRELOAD set set containing /usr/sfw/lib/libstdc++,so.6

4) most likely: /usr/sfw/lib precedes /usr/gcc/4.7/lib in the runtime
linker's search path (or /usr/gcc/4.7/lib is not on the search path at
all)... i forgot where that is configured on Solaris

> Then some version not found: sure, that one is not gcc4.7....
> 
> Later in the deps list, libstdc++.so.6 appears again, this time
> correctly under /usr/gcc/4..7/lib...

Solaris runtime linker will load 2 different libraries with the same
SONAME, if some other library requires a symbol version that is not
supplied by the already loaded library with the required SONAME, and
another library with the same SONAME can be found that supplies the
required symbol version.  corner case: un-versioned symbols will satisfy
any requested symbol version.

> How can this be? Maybe this is the problem around X11OpenGLDeviceInfo
> undefined and referenced in this so?

it could be a problem, but unrelated to X11OpenGLDeviceInfo.

> sonicle at xstreamdev:/sources/sonicle/xstream-desktop-gate/components/pidgin$
> ldd
> /sources/sonicle/xstream-desktop-gate/components/libreoffice/libreoffice/libreoffice-4.4.0.3/instdir/program/libvcllo.so
> libstdc++.so.6 => /usr/sfw/lib/libstdc++.so.6
> libstdc++.so.6 (GLIBCXX_3.4.15) => (version not found)
> libstdc++.so.6 (CXXABI_1.3) => (version not found)
> libjpeg.so.8 => /usr/lib/libjpeg.so.8




More information about the LibreOffice mailing list