Stuart Henderson:
> > ld: error: undefined symbol: std::__1::basic_ostream<char,
> > std::__1::char_traits<char> >::operator<<(std::__1::basic_ostream<char,
> > std::__1::char_traits<char> >& (*)(std::__1::basic_ostream<char,
> > std::__1::char_traits<char> >&))
> > >>> referenced by TodoDB.cc
> > >>>
> > >>> TodoDB.o:(TodoDB::StreamColour::veryhigh(std::__1::basic_ostream<char,
> > >>> std::__1::char_traits<char> >&))
>
> I'll update i386 after my current build is done and take a look there
> (got about a day to go) but if you have time could you try reordering
> the #includes in util/Strings.h please? Perhaps move "#include <string>"
> up ..
??? That doesn't have any bearing on the problem at hand.
ld complains that this is an undefined symbol:
std::__1::basic_ostream<char, std::__1::char_traits<char>
>::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&
(*)(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))
Which is a bit confusing, because it appears in libc++.so.3.0.
Anyway, in more human-readable form that's ...
basic_ostream::operator<<(basic_ostream& (*)(basic_ostream&))
... which brings us to this part of the libc++ diff:
// 27.7.2.6 Formatted output:
- inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+ inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
{ return __pf(*this); }
c++ -E confirms that this now expands to an additional
__visibility__("hidden").
So...
(1) Is this change intentional?
(2) If so, what's required to fix the code?
--
Christian "naddy" Weisgerber [email protected]