[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] STL fixes
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Thu, 22 Apr 2010 13:07:24 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:received:message-id:subject:from:to:content-type; bh=MCbVuT3D+G7PKMCXBaOLsMbzgcCp7KJxBYEB7Q4k9Xg=; b=ZpV/I4Ka5IMonMLObEy7jL9CZ4rsnw8D4PVrp6x3K5+50y+mSTd5ld3uiLFNkmjkKQ kiA0R0XLVLL7aGLT9GrgjtVIqDQ6v1vBU19cJ93EtY0h24ahM9lclH/PaMtGG+M2R+3K XjNR/ESx70eRjt3fWwCwpdduQeQXXvkjIB8lo=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=cBzAowvwAL9UY+/uzM9dv1PmclAT5mzR2eXWqxOZsErxdjrxPmhWi0NIXTOUBNdcJk dH9FICzrvR9h9qXxptKXJOnTEebWz1R/ZWGcrl3HTEp0GeNh7wRkD3gNSomRSyWmTpvl K/5uqnCywkQ1Ztnnl+2aFasuw6kDUjdb62yEs=
The good news is that the stdlist test is also failing to link, so
it's a good test.
2010/4/22 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
> 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
>>>> >
>>>> >
>>>> >
>>>>
>>>>
>>>
>>>
>>
>>
>>
>