gcc-4.0.0 for sparc-sun-solaris2.8: Almost all good!
Brad Spencer
spencer@infointeractive.com
Tue Apr 26 19:46:00 GMT 2005
First, let me say sorry for not being able to test properly before the
release of gcc-4.0.0. Constraints here made it impossible :(
However, I have had no trouble building sparc-sun-solaris2.8 gcc-4.0.0.
I build a cross, hosted on i686-pc-linux-gnu, and I build a Canadian
cross (how appropriate ;) using that, which I then run on Solaris,
targeting Solaris, when necessary. All of this went more smoothly
than anything in recent memory.
I have spent some time over the last few days exercising the cross
compiler with large chunks of our source and haven't run into many
snags.
Speed-wise, if anything, the new compiler seems a bit faster. Some
timing results for a small subset with some heavy template usage.
These were using the Linux-hosted cross compiler:
gcc-3.4.3:
real 5m30.053s
user 6m26.404s
sys 0m29.438s
gcc-4.0.0:
real 5m24.522s
user 6m15.444s
sys 0m25.392s
There's only one real problem that I've found so far. I'm hoping
someone can point me in the right direction and I'll investigate more
and file a PR.
One library I have makes heavy use of Boost.Spirit, which is heavy on
templates. Strangely enough, though, when I link this static library
against code that uses it, ld 2.15 claims that some of
std::vector<std::string>'s member functions are not available to
link. It takes a very long time to conclude this, as if it is
searching through every symbol (linearly?). I've attached some sample
output and more details on the compilation.
I fixed this by adding the following to the library:
template class std::vector<std::string>;
Clearly, I shouldn't have to do that. In my mind this could be
libstdc++ or gcc. Ideas? Narrowing this down to a simple test case
is very difficult; this is only happening in the complex case of using
Boost.Spirit. :(
Other than that, everything seems to be working fine, including wide
character support after Benjamin's rewritten configury.
--
------------------------------------------------------------------
Brad Spencer - spencer@infointeractive.com - "It's quite nice..."
Systems Architect | InfoInterActive Corp. | A Canadian AOL Company
-------------- next part --------------
gcc version information:
Using built-in specs.
Target: sparc-sun-solaris2.8
Configured with: ../../gcc-4.0.0/configure --with-dwarf2 --enable-languages=c,c++ --enable-threads=no --disable-shared --prefix=/opt/gcc-4.0.0-cross/sparc-sun-solaris2.8 --with-gnu-as --with-gnu-ld --disable-multilib --enable-concept-checks --enable-clocale=generic --enable-libstdcxx-allocator=mt --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=sparc-sun-solaris2.8 --with-sysroot=/opt/sysroot/sparc-sun-solaris2.8/
Thread model: single
gcc version 4.0.0
The library and binary were compiled with lines of the form:
/opt/gcc-4.0.0-cross/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-g++ -Wall -Wno-non-virtual-dtor -include /hosts/twiki/spencer/devel/sparc-sun-solaris2.8/APP/src/SystemHeaderFixes.hh -g -O6 -fexpensive-optimizations -mtune=ultrasparc -mcpu=ultrasparc -ffast-math -funroll-loops -DNDEBUG -Werror -DIIA_HAVE_DEV_POLL=1 -I/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/APP/include -I/opt/gnu/sparc-sun-solaris2.8/include -I/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/APP/include/3rdParty -DBUILD_MACHINE="\"twiki\"" -DBUILD_ARCH="\"sparc-sun-solaris2.8 on i686-pc-linux-gnu [cross]\"" -DBUILD_USER="\"spencer\"" -DBUILD_OPTS="\"/opt/gcc-4.0.0-cross/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-g++ -g -O6 -fexpensive-optimizations -mtune=ultrasparc -mcpu=ultrasparc -ffast-math -funroll-loops -DNDEBUG -Werror [...]\"" -DBUILD_VERSION="\"\"" -DBUILD_NUMERIC_VERSION=0x00000000 -pipe -c -o FILE.o FILE.cc
The errors:
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4690): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::clear()'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x469c):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::clear()'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x46fc):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4708):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4794): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x47a0):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4ddc):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4df8):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: more undefined references to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4e10): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::clear()'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4e18):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::clear()'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4e48): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4e58):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4f10): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x4f1c):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/src/Common/libs/LIBRARY/Grammar.hh:537: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x5c80): In function `LIBRARY::detail::Grammar::definition<boost::spirit::scanner<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> > >::definition(LIBRARY::detail::Grammar const&)':
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: undefined reference to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/lib/libLIBRARY.a(Parser.o)(.gnu.linkonce.t._ZN13LIBRARY6detail7Grammar10definitionIN5boost6spirit7scannerIN9__gnu_cxx17__normal_iteratorIPcSsEENS4_16scanner_policiesINS4_16iteration_policyENS4_12match_policyENS4_13action_policyEEEEEEC1ERKS1_+0x5c88):/hosts/twiki/spencer/devel/sparc-sun-solaris2.8/map/include/3rdParty/boost/spirit/phoenix/actor.hpp:347: more undefined references to `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
More information about the Libstdc++
mailing list