Test failure for basic_cstring_test

Hello, basic_cstring_test fails on gcc-3.2.3 in a way that causes the test post processing to fail, too. The basic_cstring_test related lines from the log file are appended to this message. The full log for gcc-3.2.3-linux can be found at http://tinyurl.com/34ltq Regression log post processing fails with this message: **** exception(205): std::exception: boost::filesystem::path: invalid name "basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0x757):.." in path: "bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0x757):../libs/test/test" ******** errors detected; see standard output for details ******** Regards, m gcc-C++-action ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o /boost/head-regression/boost/boost/test/test_tools.hpp: In function `bool boost::test_tools::detail::equal_and_continue_impl(const Left&, const Right&, boost::wrap_stringstream&, boost::unit_test::basic_cstring<const char>, unsigned int, boost::unit_test::log_level, unsigned int) [with Left = size_t, Right = int]': ../libs/test/test/basic_cstring_test.cpp:82: instantiated from `void constructors_test(CharT*) [with CharT = wchar_t]' ../libs/test/test/basic_cstring_test.cpp:124: instantiated from `static void meta_constructors_test::execute(T*) [with T = wchar_t]' /boost/head-regression/boost/boost/test/test_case_template.hpp:60: instantiated from `void boost::unit_test::detail::test_case_template_instance<TestCaseTemplate, TestType>::do_run() [with TestCaseTemplate = meta_constructors_test, TestType = wchar_t]' /boost/head-regression/boost/boost/utility/value_init.hpp:49: instantiated from here /boost/head-regression/boost/boost/test/test_tools.hpp:430: warning: comparison between signed and unsigned integer expressions gcc-Link-action ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0x657): In function `void find_test<char const>(char const*)': ../libs/test/test/basic_cstring_test.cpp:470: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0x757):../libs/test/test/basic_cstring_test.cpp:368: undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0x8ac):../libs/test/test/basic_cstring_test.cpp:432: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0xa1a):../libs/test/test/basic_cstring_test.cpp:433: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIhEvPT_+0xb93):../libs/test/test/basic_cstring_test.cpp:480: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z16data_access_testIhEvPT_+0xb8): In function `void data_access_test<unsigned char>(unsigned char*)': /boost/head-regression/boost/boost/test/detail/basic_cstring/basic_cstring.hpp:539: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z16data_access_testIhEvPT_+0x1e7): In function `void data_access_test<unsigned char>(unsigned char*)': /boost/head-regression/boost/boost/test/test_tools.hpp:446: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z14asignment_testIhEvPT_+0xea):/usr/local/gcc-3.2.3/include/c++/3.2.3/bits/basic_string.tcc:155: more undefined references to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' follow ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIKhEvPT_+0x757): In function `void find_test<char const>(char const*)': ../libs/test/test/basic_cstring_test.cpp:368: undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIKhEvPT_+0x8ac):../libs/test/test/basic_cstring_test.cpp:432: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIKhEvPT_+0xa1a):../libs/test/test/basic_cstring_test.cpp:433: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z17constructors_testIKhEvPT_+0xb93):../libs/test/test/basic_cstring_test.cpp:480: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z23constructors_const_testIKhEvPT_+0x114): In function `void constructors_const_test<unsigned char const>(unsigned char const*)': ../libs/test/test/basic_cstring_test.cpp:195: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z20asignment_const_testIKhEvPT_+0x11f): In function `void asignment_const_test<unsigned char const>(unsigned char const*)': /usr/local/gcc-3.2.3/include/c++/3.2.3/bits/basic_string.tcc:160: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._Z20asignment_const_testIKhEvPT_+0x258):../libs/test/test/basic_cstring_test.cpp:353: more undefined references to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' follow ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIhEC1EPh+0x37): In function `boost::unit_test::basic_cstring<unsigned char>::basic_cstring[in-charge](unsigned char*)': /boost/head-regression/boost/boost/detail/shared_count.hpp:150: undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_testltIhEEbRKNS0_13basic_cstringIT_EES6_+0x7c): In function `bool boost::unit_test::operator< <unsigned char>(boost::unit_test::basic_cstring<unsigned char> const&, boost::unit_test::basic_cstring<unsigned char> const&)': /boost/head-regression/boost/boost/test/detail/basic_cstring/compare.hpp:51: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNK5boost9unit_test13basic_cstringIhE4findES2_+0xab): In function `boost::unit_test::basic_cstring<unsigned char>::find(boost::unit_test::basic_cstring<unsigned char>) const': ../libs/test/test/basic_cstring_test.cpp:329: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIhE10trim_rightES2_+0x8d): In function `boost::unit_test::basic_cstring<unsigned char>::trim_right(boost::unit_test::basic_cstring<unsigned char>)': ../libs/test/test/basic_cstring_test.cpp:260: undefined reference to `std::char_traits<unsigned char>::find(unsigned char const*, unsigned, unsigned char const&)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIhE9trim_leftES2_+0x8b): In function `boost::unit_test::basic_cstring<unsigned char>::trim_left(boost::unit_test::basic_cstring<unsigned char>)': /boost/head-regression/boost/boost/detail/shared_count.hpp:345: undefined reference to `std::char_traits<unsigned char>::find(unsigned char const*, unsigned, unsigned char const&)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNK5boost9unit_test13basic_cstringIhE5rfindES2_+0xab): In function `boost::unit_test::basic_cstring<unsigned char>::rfind(boost::unit_test::basic_cstring<unsigned char>) const': ../libs/test/test/basic_cstring_test.cpp:329: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIKhEC1EPS2_+0x37): In function `boost::unit_test::basic_cstring<unsigned char const>::basic_cstring[in-charge](unsigned char const*)': /boost/head-regression/boost/boost/detail/shared_count.hpp:150: undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEEC1EPKhRKS1_+0x13): In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::basic_string[in-charge](unsigned char const*, std::allocator<unsigned char> const&)': /boost/head-regression/boost/boost/test/detail/basic_cstring/basic_cstring.hpp:531: undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_testltIKhEEbRKNS0_13basic_cstringIT_EES7_+0x7c): In function `bool boost::unit_test::operator< <unsigned char const>(boost::unit_test::basic_cstring<unsigned char const> const&, boost::unit_test::basic_cstring<unsigned char const> const&)': /boost/head-regression/boost/boost/test/detail/basic_cstring/compare.hpp:51: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNK5boost9unit_test13basic_cstringIKhE4findES3_+0xab): In function `boost::unit_test::basic_cstring<unsigned char const>::find(boost::unit_test::basic_cstring<unsigned char const>) const': ../libs/test/test/basic_cstring_test.cpp:329: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIKhE10trim_rightES3_+0x8d): In function `boost::unit_test::basic_cstring<unsigned char const>::trim_right(boost::unit_test::basic_cstring<unsigned char const>)': ../libs/test/test/basic_cstring_test.cpp:260: undefined reference to `std::char_traits<unsigned char>::find(unsigned char const*, unsigned, unsigned char const&)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_test13basic_cstringIKhE9trim_leftES3_+0x8b): In function `boost::unit_test::basic_cstring<unsigned char const>::trim_left(boost::unit_test::basic_cstring<unsigned char const>)': /boost/head-regression/boost/boost/detail/shared_count.hpp:345: undefined reference to `std::char_traits<unsigned char>::find(unsigned char const*, unsigned, unsigned char const&)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNK5boost9unit_test13basic_cstringIKhE5rfindES3_+0xab): In function `boost::unit_test::basic_cstring<unsigned char const>::rfind(boost::unit_test::basic_cstring<unsigned char const>) const': ../libs/test/test/basic_cstring_test.cpp:329: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_testeqIhhEEbRKNS0_13basic_cstringIT_EERKNS2_IT0_EE+0x5c): In function `bool boost::unit_test::operator==<unsigned char, unsigned char>(boost::unit_test::basic_cstring<unsigned char> const&, boost::unit_test::basic_cstring<unsigned char> const&)': /boost/head-regression/boost/boost/test/test_tools.hpp:434: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE5c_strEv+0x2e): In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::c_str() const': /usr/local/gcc-3.2.3/include/c++/3.2.3/bits/stl_algobase.h:240: undefined reference to `std::char_traits<unsigned char>::assign(unsigned char&, unsigned char const&)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZN5boost9unit_testeqIKhS2_EEbRKNS0_13basic_cstringIT_EERKNS3_IT0_EE+0x5c): In function `bool boost::unit_test::operator==<unsigned char const, unsigned char const>(boost::unit_test::basic_cstring<unsigned char const> const&, boost::unit_test::basic_cstring<unsigned char const> const&)': /boost/head-regression/boost/boost/test/test_tools.hpp:434: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE13_S_copy_charsEPhPKhS5_+0x20): In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_S_copy_chars(unsigned char*, unsigned char const*, unsigned char const*)': /boost/head-regression/boost/boost/detail/shared_count.hpp:100: undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)' collect2: ld returned 1 exit status set -e LD_LIBRARY_PATH=/usr/local/gcc-3.2.3/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH "/usr/local/gcc-3.2.3/bin/g++wrap" --limit-memory=600 --limit-cpu=1800 -g -o "../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test" -L"../bin/boost/libs/test/build/libboost_unit_test_framework.a/gcc-3.2.3-linux/debug" -L"/usr/local/gcc-3.2.3/lib" "../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test.o" "../bin/boost/libs/test/build/libboost_unit_test_framework.a/gcc-3.2.3-linux/debug/libboost_unit_test_framework.a" "../bin/boost/libs/test/build/libboost_unit_test_framework.a/gcc-3.2.3-linux/debug/libboost_unit_test_framework.a" -Wl,-rpath-link,. ...failed gcc-Link-action ../bin/boost/libs/test/test/basic_cstring_test.test/gcc-3.2.3-linux/debug/basic_cstring_test... ...skipped <@boost!libs!test!test/basic_cstring_test.test/gcc-3.2.3-linux/debug>basic_cstring_test.run for lack of <@boost!libs!test!test/basic_cstring_test.test/gcc-3.2.3-linux/debug>basic_cstring_test...

/boost/head-regression/boost/boost/test/test_tools.hpp:434: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)'
For some reason there is no specialization of std::char_trairs for unsigned char. Does anybody knows a workaround, oher than like exlicit specialization in my code? Gennadiy.

Gennadiy Rozental wrote:
/boost/head-regression/boost/boost/test/test_tools.hpp:434: undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)'
For some reason there is no specialization of std::char_trairs for unsigned char. Does anybody knows a workaround, oher than like exlicit specialization in my code?
Why do you think specialization for unsigned char should exist?
From std::21/4
This subclause specifies a class template char_traits<charT> and two explicit speicalizations of it, char_traits<char> and char_traits<wchar_t>..... - Volodya

For some reason there is no specialization of std::char_trairs for unsigned char. Does anybody knows a workaround, oher than like exlicit specialization in my code?
Two points: 1) The standard does not require char_traits<unsigned char> to be specialised. 2) The standard prohibits the user (you) from specialising it. Sorry but this need rethinking. John.

Martin Wille wrote:
Hello,
basic_cstring_test fails on gcc-3.2.3 in a way that causes the test post processing to fail, too.
I've fixed process_jam_log to avoid the error. The message from the linker included ".linkonce" and process_jam_log though it's bjam message. Could you update, rebuild and try again? OTOH, this does not change the fact the Boost.Test fails some of its own tests... - Volodya

Vladimir Prus wrote:
Martin Wille wrote:
Hello,
basic_cstring_test fails on gcc-3.2.3 in a way that causes the test post processing to fail, too.
I've fixed process_jam_log to avoid the error. The message from the linker included ".linkonce" and process_jam_log though it's bjam message. Could you update, rebuild and try again?
Thanks a lot! What yo did seems to work. I'll run the tests tonight.
OTOH, this does not change the fact the Boost.Test fails some of its own tests...
Of course. But at least we're going to have test results again. Regards, m
participants (4)
-
Gennadiy Rozental
-
John Maddock
-
Martin Wille
-
Vladimir Prus