Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed demangling for some ApplyGCThingTyped symbols in libxul #203

Open
mstange opened this issue May 20, 2020 · 4 comments
Open

Failed demangling for some ApplyGCThingTyped symbols in libxul #203

mstange opened this issue May 20, 2020 · 4 comments

Comments

@mstange
Copy link
Contributor

mstange commented May 20, 2020

cppfilt is unable to demangle these names:

__ZN2js17ApplyGCThingTypedIZNS_8GCMarker12traverseEdgeIPNS_5ShapeEN2JS11PropertyKeyEEEvT_RKT0_EUlTyS7_E_EEbRKS6_OS7_`
__ZZN2js8GCMarker12traverseEdgeIPNS_5ShapeEN2JS11PropertyKeyEEEvT_RKT0_ENKUlTyS6_E_clIP8JSStringEEDaS6_

c++filt demangles them to the following:

bool js::ApplyGCThingTyped<void js::GCMarker::traverseEdge<js::Shape*, JS::PropertyKey>(js::Shape*, JS::PropertyKey const&)::'lambda'<typename $T>(js::Shape*)>(JS::PropertyKey const&, js::Shape*&&)
auto void js::GCMarker::traverseEdge<js::Shape*, JS::PropertyKey>(js::Shape*, JS::PropertyKey const&)::'lambda'<typename $T>(js::Shape*)::operator()<JSString*>(js::Shape*) const
@khuey
Copy link
Collaborator

khuey commented Jun 9, 2020

Those symbols don't demangle for me with the latest binutils cxxfilt.

@Saldivarcher
Copy link
Collaborator

Only llvm-cxxfilt has implemented the new c++20 lambda expressions: https://reviews.llvm.org/rL371273

@mstange
Copy link
Contributor Author

mstange commented Jun 9, 2020

My c++filt came with macOS 10.15, "GNU c++filt 070207 20070207".

The symbols are produced by the macOS compiler builds installed by mach bootstrap, clang++ --version says clang version 9.0.1.

@Saldivarcher
Copy link
Collaborator

Saldivarcher commented Jun 10, 2020

@mstange that version of c++filt is a fork from apple that is from around ~2005. It internally calls __cxa_demangle which on an apple machine uses llvm's libc++ rather than gcc's libstdc++, so that's why the apple version of c++filt demangles that mangled name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants