This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/70909] Libiberty Demangler segfaults (4)


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70909

--- Comment #35 from Mark Wielaard <mark at gcc dot gnu.org> ---
(In reply to Marcel Böhme from comment #31)
> Hi Mark,
> 
> Your patch looks good to me. One more thing: It seems that our patches
> evaluate these two mangled strings differently. Is it because of Nathan's
> patch? Can these strings be demangled properly at all?
> 
> > 
> _ZNK6Common15ConvertingRangeIN5boost12range_detail17transformed_rangeIZN1a1b1
> cEbEUljE_KSt6vectorIjSaIjEEEEEcvT_IS7_INS4_1dESaISF_EEEEv
> 
> Common::ConvertingRange<boost::range_detail::transformed_range<a::b::c(bool):
> :{lambda(unsigned int)#1}, std::vector<unsigned int, std::allocator<unsigned
> int> > const> >::operator a::b::c(bool)::{lambda(unsigned int)#1}<a::d,
> std::allocator<Common::ConvertingRange<boost::range_detail::
> transformed_range<a::b::c(bool)::{lambda(unsigned int)#1},
> std::vector<unsigned int, std::allocator<unsigned int> > const> >::operator
> > ><a::b::c(bool)::{lambda(unsigned int)#1}<a::d,
> std::allocator<Common::ConvertingRange<boost::range_detail::
> transformed_range<a::b::c(bool)::{lambda(unsigned int)#1},
> std::vector<unsigned int, std::allocator<unsigned int> > const> >::operator
> Common::ConvertingRange<boost::range_detail::transformed_range<a::b::c(bool):
> :{lambda(unsigned int)#1}, std::vector<unsigned int, std::allocator<unsigned
> int> > const> >::operator > > >() const


This one is still a mystery. It comes from PR67738.

The other does demangle with Nathan's lambda patch if we allow two levels of
recursion.
> > _ZNK6clover6detail11basic_rangeINS_13adaptor_rangeINS_9addressesEINS2_IRFRNS_5eventEP9_cl_eventEINS_14iterator_rangeIPKS7_EEEEEEEENS0_16iterator_adaptorIS3_INSG_IS9_ISC_EEEEEESI_EcvT_ISt6vectorIPS4_SaISN_EEvEEv
> 
> clover::detail::basic_range<clover::adaptor_range<clover::addresses,
> clover::adaptor_range<clover::event& (&)(_cl_event*),
> clover::iterator_range<_cl_event* const*> > >,
> clover::detail::iterator_adaptor<clover::addresses<clover::detail::
> iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event* const*> > > >,
> clover::detail::iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event*
> const*> > >::operator std::vector<clover::event*,
> std::allocator<clover::detail::basic_range<clover::adaptor_range<clover::
> addresses, clover::adaptor_range<clover::event& (&)(_cl_event*),
> clover::iterator_range<_cl_event* const*> > >,
> clover::detail::iterator_adaptor<clover::addresses<clover::detail::
> iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event* const*> > > >,
> clover::detail::iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event*
> const*> > >::operator > ><std::vector<clover::event*,
> std::allocator<clover::detail::basic_range<clover::adaptor_range<clover::
> addresses, clover::adaptor_range<clover::event& (&)(_cl_event*),
> clover::iterator_range<_cl_event* const*> > >,
> clover::detail::iterator_adaptor<clover::addresses<clover::detail::
> iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event* const*> > > >,
> clover::detail::iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event*
> const*> > >::operator
> clover::detail::basic_range<clover::adaptor_range<clover::addresses,
> clover::adaptor_range<clover::event& (&)(_cl_event*),
> clover::iterator_range<_cl_event* const*> > >,
> clover::detail::iterator_adaptor<clover::addresses<clover::detail::
> iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event* const*> > > >,
> clover::detail::iterator_adaptor<clover::event& (&)(_cl_event*)<_cl_event*
> const*> > >::operator > >, void>() const

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]