[c++] wchar_t instantiations missing now
Benjamin Kosnik
bkoz@redhat.com
Mon Nov 20 09:55:00 GMT 2000
I'm seeing link failures for all shared objects on x86/linux right
now. This is a new failure, that I'd not seen last week, and probably
related to the ABI switch.
Here's the link failure:
/mnt/hd/ahimsa/bld-x86-gcc-3-c/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so:
undefined reference to
`_ZNSbIwSt11char_traitsIwESaIwEEC1ISt17__normal_iteratorIPwS2_EEET_S7_RKS1_'
/mnt/hd/ahimsa/bld-x86-gcc-3-c/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so:
undefined reference to
`_ZNSsC1ISt17__normal_iteratorIPcSsEEET_S3_RKSaIcE' collect2: ld
returned 1 exit status
/mnt/hd/ahimsa/bld-x86-gcc-3-c/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so:
undefined reference to
`_ZNSbIwSt11char_traitsIwESaIwEEC1ISt17__normal_iteratorIPwS2_EEET_S7_RKS1_'
/mnt/hd/ahimsa/bld-x86-gcc-3-c/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so:
undefined reference to
`_ZNSsC1ISt17__normal_iteratorIPcSsEEET_S3_RKSaIcE' collect2: ld
returned 1 exit status
I'll decrypt this stuff, as it's not so obvious what's happening here...
Taking the first of these symbols and demangling it
`_ZNSbIwSt11char_traitsIwESaIwEEC1ISt17__normal_iteratorIPwS2_EEET_S7_RKS1_'
shows that it's caused by a member template constructor:
std::wstring::wstring(std::wstring::iterator, std::wstring::iterator, std::allocator const&)
(which relates to include/bits/basic_string.h: 336)
template<class _InputIterator>
basic_string(_InputIterator __begin, _InputIterator __end,
const _Alloc& __a = _Alloc());
This member function is explicitly instantiated as part of
(src/string-inst.cc: 82) with C=wchar_t as part of this:
template
S::basic_string(S::iterator, S::iterator, const allocator<C>&);
However, looking through the nm output of this file, I see:
U_ZNSbIwSt11char_traitsIwESaIwEEC1ISt17__normal_iteratorIPwS2_EEET_S7_RKS1_
Eeek. This should be weak.
-benjamin
More information about the Gcc-bugs
mailing list