Re: missing symbols with bobcat C++ library on armel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



George Danchev <danchev@xxxxxxxxx> writes:

> 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.

You don't mention it, but the log shows undefined references to the
vtable for FBB:MultiStreambuf.  I have not looked at the code, but this
certainly sounds like a missing key method.  Can you show us just the
declaration of MultiStreambuf from the .h file?  That will let us tell
you what the key method is.  If that key method is not defined anywhere,
then these kinds of errors are possible.

> 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?

Yes, I'm suggesting basically this.  It could be happening only on armel
because gcc could be making different inlinining decisions on armel.
The error can happen when gcc decides not to inline a function marked
inline, but to instead call the non-inlined instance; if there is no key
method, then gcc never creates a non-inlined instance.  I don't have an
explanation as to why the inlining decisions would be different; it's
possible that that is a compiler bug, or there could be some valid
reason.

Ian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux