[Libreoffice] gcc/g++ compilation issue in desktop/splash

Michael Meeks michael.meeks at novell.com
Wed Aug 24 10:06:44 PDT 2011

Hi Kevin,

	Sorry for the delayed reply ...

On Mon, 2011-08-22 at 12:08 -0400, Kevin Hunter wrote:
> I haven't seen a fix go by, and have seen nothing mentioned on the list 
> regarding building the splash part of desktop, but I'm having an issue 
> that appears to be solved by switching to g++ instead of gcc:

	Hmm - I don't really understand that I must confess.

> Making:    oosplash
> ccache /usr/local/bin/gcc -Wl,-z,noexecstack -Wl,-z,combreloc 
> /home/kevin/devel/libreoffice/solver/350/unxlngx6/lib/libuno_sal.so: 
> undefined reference to 
> `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
> collect2: ld returned 1 exit status
> dmake:  Error code 1, while making '../../unxlngx6/bin/oosplash'

	So - I have:

/opt/icecream/bin/gcc -Wl,-z,noexecstack -Wl,-z,combreloc -Wl,-z,defs
-Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new
-Wl,--dynamic-list-cpp-typeinfo -Wl,--hash-style=gnu
-Wl,-rpath-link,../../unxlngi6.pro/lib:/data/opt/libreoffice/core/solver/350/unxlngi6.pro/lib:/lib:/usr/lib -L../../unxlngi6.pro/lib -L../lib -L/data/opt/libreoffice/core/solenv/unxlngi6/lib -L/data/opt/libreoffice/core/solver/350/unxlngi6.pro/lib -L/data/opt/libreoffice/core/solenv/unxlngi6/lib ../../unxlngi6.pro/obj/splashx.o
./../unxlngi6.pro/obj/start.o ../../unxlngi6.pro/obj/args.o
./../unxlngi6.pro/obj/pagein.o ../../unxlngi6.pro/obj/file_image_unx.o
-lpthread -Wl,--as-needed -lXext -lX11 -Wl,--no-as-needed -luno_sal
-lpng14 -lXinerama -o ../../unxlngi6.pro/bin/oosplash

	Which works fine here at least. And I have no list_node_base related
symbol at all exported from libuno_sal.so - odd.

> By executing that line manually and switching to /usr/local/bin/g++ the 
> compile is successful.  And that point I can restart the build and LO 
> finishes with a successful build.

	Which is indeed odd.

> It looks like the source of those files is C, but the libuno_sal is a 
> .cpp file.  I'm not clear on the linking rules bewteen the C and CPP, 
> but given that no one else is having this issue, is there something else 
> that I'm missing?

	So - libuno_sal is a C++ library, certainly - but surely we should be
able to link it without any magic.

	I wonder what changed there ? libuno_sal.so - clearly does have a
number of C++ exports it requires (objdump -T shows):

00000000      DF *UND*  00000000  GLIBCXX_3.4 _ZSt20__throw_length_errorPKc

	But then again, it links to libstdc++

$ ldd ../sal/unxlngi6.pro/lib/libuno_sal.so
	linux-gate.so.1 =>  (0xffffe000)
	libdl.so.2 => /lib/libdl.so.2 (0xb7762000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xb7747000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7658000)
	libm.so.6 => /lib/libm.so.6 (0xb762e000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb760f000)
	libc.so.6 => /lib/libc.so.6 (0xb74a2000)
	/lib/ld-linux.so.2 (0xb77db000)
$ objdump -T /usr/lib/libstdc++.so.6 | grep _ZSt20__throw_length_errorPKc
00055890 g    DF .text	000000d5  GLIBCXX_3.4 _ZSt20__throw_length_errorPKc

	At least for me ...

	Can you do some more investigation of which symbol is missing from
where ? of course, failing that we can do some horror of a rename in
there, or perhaps poking at removing things like:



	might help - but ... ideally we want as little junk in the splash app
as humanly possible; it'd be most ideal not to link sal at all IMHO
but ... ;-) its more work to avoid it.



 michael.meeks at novell.com  <><, Pseudo Engineer, itinerant idiot

More information about the LibreOffice mailing list