Re: [eigen] STL fixes

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


I can't reproduce this with GCC 4.4.1 - maybe that's expected since
you reported 4.5.0 is failing. :)

I am wondering where the std::list dependency comes from in the
matrix_function unit test. Any idea?

- Hauke

On Thu, Apr 22, 2010 at 6:45 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> 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/