[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