This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]