missing symbols with bobcat C++ library on armel
George Danchev
danchev@spnet.net
Wed May 25 08:30:00 GMT 2011
Hi guys,
We've been experiencing missing symbols on armel architecture with a C++
library for quite some time, and application linking with that library fails
to link as well.
The bug in question is:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602817
stealth application build logs:
https://buildd.debian.org/status/package.php?p=stealth&suite=sid
bobcat library build logs:
https://buildd.debian.org/status/package.php?p=bobcat&suite=sid
(you can get the sources of these from Debian archive or from stealth.sf.net
and bobcat.sf.net resp. )
The problematic part on armel is to be found in this class:
bobcat/multistreambuf/
Missing symbols are probably related to the following usage pattern (all valid
code in my opinion) of members:
MultiStreambuf::overflow(int c)
MultiStreambuf::sync()
MultiStreambuf::xsputn(char const *buffer, std::streamsize n)
* all are private virtual;
* all implemented in separate translation unit (multistreambuf.ih);
* all inlined
* dtor for MultiStreambuf class is not explicitly defined.
Or any architecture (except armel) these symbols are there;
on amd64 for instance:
$ objdump -T /usr/lib/libbobcat.so.2.15.02 | c++filt | objdump -T
/usr/lib/libbobcat.so.2.15.02 | c++filt | grep MultiStreambuf::sync
0000000000059b20 w DF .text 0000000000000005 Base
FBB::MultiStreambuf::sync()
On armel they are not, and the stealth program fails to link as well.
This is observed with g++-4.{5, 6} --std=c++0x.
You can grab the debs of the bobcat library and stealth app from Debian
archive for any architecture and perform 'ar -x' on it, then unpack data.tar
to decompose it:
http://ftp.de.debian.org/debian/pool/main/b/bobcat/libbobcat2_2.15.02-1_amd64.deb
http://ftp.de.debian.org/debian/pool/main/b/bobcat/libbobcat2_2.15.02-1_armel.deb
inspect with objdump as well.
The main question is: is this a bug in the toolchain (compiler, linker) or bug
in the library code itself? Note, that we are not quite looking for
workarounds (dropping inline, moving it to another translation unit, etc), but
to understand the root cause behind that. Please, let us know whether we need
to provide more information?
Also I wonder whether the missing symbols has anything to do with:
http://gcc.gnu.org/faq.html#vtables
but then again why is that only observed on armel?
Please CC as I'm not subscribed to this list. Thank you.
--
pub 4096R/0E4BD0AB <people.fccf.net/danchev/key pgp.mit.edu>
More information about the Gcc-help
mailing list