This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
missing symbols with bobcat C++ library on armel
- From: George Danchev <danchev at spnet dot net>
- To: gcc-help at gcc dot gnu dot org
- Cc: f dot b dot brokken at rug dot nl, tony mancill <tmancill at debian dot org>
- Date: Wed, 25 May 2011 09:02:55 +0300
- Subject: missing symbols with bobcat C++ library on armel
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>