Re: [eigen] STL fixes

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi,

With GCC 4.5.0 / linux / x86-64 I am getting linking errors with the
matrix_function unit tests.

Linking CXX executable matrix_function_7
CMakeFiles/matrix_function_1.dir/matrix_function.cpp.o: In function
`std::list<std::complex<float>, std::allocator<std::complex<float> >
>::_M_insert(std::_List_iterator<std::complex<float> >,
std::complex<float> const&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1435:
undefined reference to
`std::_List_node_base::_M_hook(std::_List_node_base*)'
CMakeFiles/matrix_function_1.dir/matrix_function.cpp.o: In function
`std::list<std::list<std::complex<float>,
std::allocator<std::complex<float> > >,
std::allocator<std::list<std::complex<float>,
std::allocator<std::complex<float> > > >
>::_M_insert(std::_List_iterator<std::list<std::complex<float>,
std::allocator<std::complex<float> > > >,
std::list<std::complex<float>, std::allocator<std::complex<float> > >
const&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1435:
undefined reference to
`std::_List_node_base::_M_hook(std::_List_node_base*)'
CMakeFiles/matrix_function_1.dir/matrix_function.cpp.o: In function
`std::list<std::list<std::complex<float>,
std::allocator<std::complex<float> > >,
std::allocator<std::list<std::complex<float>,
std::allocator<std::complex<float> > > >
>::_M_erase(std::_List_iterator<std::list<std::complex<float>,
std::allocator<std::complex<float> > > >)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1451:
undefined reference to `std::_List_node_base::_M_unhook()'
CMakeFiles/matrix_function_1.dir/matrix_function.cpp.o: In function
`std::list<std::complex<float>, std::allocator<std::complex<float> >
>::_M_transfer(std::_List_iterator<std::complex<float> >,
std::_List_iterator<std::complex<float> >,
std::_List_iterator<std::complex<float> >)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1427:
undefined reference to
`std::_List_node_base::_M_transfer(std::_List_node_base*,
std::_List_node_base*)'
collect2: ld returned 1 exit status
make[3]: *** [unsupported/test/matrix_function_1] Error 1
make[2]: *** [unsupported/test/CMakeFiles/matrix_function_1.dir/all] Error 2
CMakeFiles/matrix_function_7.dir/matrix_function.cpp.o: In function
`std::list<std::complex<double>, std::allocator<std::complex<double> >
>::_M_insert(std::_List_iterator<std::complex<double> >,
std::complex<double> const&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1435:
undefined reference to
`std::_List_node_base::_M_hook(std::_List_node_base*)'
CMakeFiles/matrix_function_7.dir/matrix_function.cpp.o: In function
`std::list<std::list<std::complex<double>,
std::allocator<std::complex<double> > >,
std::allocator<std::list<std::complex<double>,
std::allocator<std::complex<double> > > >
>::_M_insert(std::_List_iterator<std::list<std::complex<double>,
std::allocator<std::complex<double> > > >,
std::list<std::complex<double>, std::allocator<std::complex<double> >
> const&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1435:
undefined reference to
`std::_List_node_base::_M_hook(std::_List_node_base*)'
CMakeFiles/matrix_function_7.dir/matrix_function.cpp.o: In function
`std::list<std::list<std::complex<double>,
std::allocator<std::complex<double> > >,
std::allocator<std::list<std::complex<double>,
std::allocator<std::complex<double> > > >
>::_M_erase(std::_List_iterator<std::list<std::complex<double>,
std::allocator<std::complex<double> > > >)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1451:
undefined reference to `std::_List_node_base::_M_unhook()'
CMakeFiles/matrix_function_7.dir/matrix_function.cpp.o: In function
`std::list<std::complex<double>, std::allocator<std::complex<double> >
>::_M_transfer(std::_List_iterator<std::complex<double> >,
std::_List_iterator<std::complex<double> >,
std::_List_iterator<std::complex<double> >)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/bits/stl_list.h:1427:
undefined reference to
`std::_List_node_base::_M_transfer(std::_List_node_base*,
std::_List_node_base*)'
collect2: ld returned 1 exit status
make[3]: *** [unsupported/test/matrix_function_7] Error 1
make[2]: *** [unsupported/test/CMakeFiles/matrix_function_7.dir/all] Error 2
make[1]: *** [unsupported/test/CMakeFiles/matrix_function.dir/rule] Error 2
make: *** [matrix_function] Error 2


2010/4/18 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
> For the first version I submitted a two file version.
>
> That means, at the moment we have
>
> Eigen/StdList
> Eigen/StdVector
>
> plus the module Eigen/src/StlSupport.
>
> Regards,
> Hauke
>
> On Sun, Apr 18, 2010 at 7:59 PM, Gael Guennebaud
> <gael.guennebaud@xxxxxxxxx> wrote:
>>
>>
>> On Sun, Apr 18, 2010 at 4:53 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
>> wrote:
>>>
>>> 2010/4/18 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
>>> > Hi,
>>> >
>>> > I started working on applying more STL fixes. In particular adding
>>> > std::list support since in many implementations we are striking the
>>> > same push_back issue as in std::vector. I am also disabling those
>>> > specializations when they are not required.
>>> >
>>> > For that matter, I created a new sub-folder/module
>>> >
>>> > src/StlSupport
>>> >
>>> > which will hold two files (maybe more, depending on whether I can
>>> > factor code when writing the StdList header)
>>> >
>>> > StdList.h
>>> > StdVector.h
>>> >
>>> > I am now wondering whether you are OK with renaming Eigen/StdVector to
>>> > Eigen/StlSupport or whether you want to keep StdVector and add StdList
>>> > on top of that!?
>>>
>>> Good question!
>>> A single StlSupport include is more convenient, but separate headers
>>> allow to do these intrusive changes only on the classes one really
>>> needs to tweak.
>>>
>>> Maybe i'm a bit in favor of your change, because the case where one
>>> would want to tweak only vector and not list, is probably very
>>> uncommon....
>>>
>>> Do as you think is right :)
>>
>> exactly the same feeling here!
>>
>> gael
>>
>>
>>>
>>> Benoit
>>>
>>> >
>>> > Regards,
>>> > Hauke
>>> >
>>> >
>>> >
>>>
>>>
>>
>>
>
>
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/