[Bug other/70517] c++filt crashes when demangling a symbol

mark at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Dec 4 17:53:00 GMT 2016


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

Mark Wielaard <mark at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mark at gcc dot gnu.org
         Depends on|                            |78252

--- Comment #4 from Mark Wielaard <mark at gcc dot gnu.org> ---
This related to Bug 78252 - C++ demangler crashes with infinite recursion with
lambda (auto)

With the patch proposed for that bug there is no crash anymore and the symbols
demangle.

_ZSt4moveIRZN11tconcurrent6futureIvE4thenIZ5awaitIS2_EDaOT_EUlRKS6_E_EENS1_INSt5decayIDTclfp_defpTEEE4typeEEES7_EUlvE_EONSt16remove_referenceIS6_E4typeES7_

demangles to:

std::remove_reference<tconcurrent::future<std::decay<decltype
({parm#1}(*this))>::type> tconcurrent::future<void>::then<auto
await<tconcurrent::future<void> >(tconcurrent::future<void>&&)::{lambda(auto&&
const&)#1}>(auto await<tconcurrent::future<void>
>(tconcurrent::future<void>&&)::{lambda(auto&& const&)#1}&&
const)::{lambda()#1}&>::type&&
std::move<tconcurrent::future<std::decay<decltype ({parm#1}(*this))>::type>
tconcurrent::future<void>::then<auto await<tconcurrent::future<void>
>(tconcurrent::future<std::decay<decltype ({parm#1}(*this))>::type>
tconcurrent::future<void>::then<auto await<tconcurrent::future<void>
>(tconcurrent::future<void>&&)::{lambda(auto&& const&)#1}>(auto
await<tconcurrent::future<void> >(tconcurrent::future<void>&&)::{lambda(auto&&
const&)#1}&& const)::{lambda()#1}&)::{lambda(auto&&
const&)#1}>(tconcurrent::future<std::decay<decltype ({parm#1}(*this))>::type>
tconcurrent::future<void>::then<auto await<tconcurrent::future<void>
>(tconcurrent::future<void>&&)::{lambda(auto&& const&)#1}>(auto
await<tconcurrent::future<void> >(tconcurrent::future<void>&&)::{lambda(auto&&
const&)#1}&& const)::{lambda()#1}&
const)::{lambda()#1}&>(tconcurrent::future<std::decay<decltype
({parm#1}(*this))>::type> tconcurrent::future<void>::then<auto
await<tconcurrent::future<void> >(tconcurrent::future<void>&&)::{lambda(auto&&
const&)#1}>(auto await<tconcurrent::future<void>
>(tconcurrent::future<void>&&)::{lambda(auto&& const&)#1}&&
const)::{lambda()#1}& const)

_Z4moveIRZ5awaitIRiEDaOT_EUlRKS3_E_ES4_S4_

demangles to:

auto await<int&>(int&)::{lambda(auto&& const&)#1}& const move<auto
await<int&>(auto await<int&>(int&)::{lambda(auto&& const&)#1}&)::{lambda(auto&&
const&)#1}&>(auto await<int&>(int&)::{lambda(auto&& const&)#1}& const)

_Z4moveIRZ5awaitIRiEDaOT_EUlRKS2_E_ES3_S3_

demangles to:

auto await<int&>(int&)::{lambda(auto const&)#1}& move<auto await<int&>(auto
await<int&>(int&)::{lambda(auto const&)#1}&)::{lambda(auto const&)#1}&>(auto
await<int&>(int&)::{lambda(auto const&)#1}&)


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78252
[Bug 78252] C++ demangler crashes with infinite recursion with lambda (auto)


More information about the Gcc-bugs mailing list