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

Cannot demangle a handful of symbols from a Linux build of Firefox #273

Closed
gabrielesvelto opened this issue Oct 19, 2022 · 2 comments
Closed

Comments

@gabrielesvelto
Copy link

I've used the current master branch of cpp_demangle on the symbols produced by a local Firefox build on my machine and found 78 that cannot be demangled. The list of affected symbols is available here. These were generated by clang 14.0.5. As always with this kind of issues it's unclear if it's cpp_demangle's fault or the symbols were mis-mangled by clang.

@gabrielesvelto
Copy link
Author

I've fed the symbols into llvm-cxxfilt and the results are here. These symbols seem to share one of the two following conditions:

  • They contain parameters that are function pointers qualified as noexcept
  • They contain a at offset <number> component which I'm not familiar with.

Here's a couple of examples:

bool __gnu_cxx::__ops::_Iter_negate<int (*)(int) noexcept>::operator()<char const*>(char const*)
nsresult mozilla::extensions::AtomSet::Get<&(mozilla::extensions::WILDCARD_SCHEMES.<char const* at offset 0>)>(RefPtr<mozilla::extensions::AtomSet>&)

khuey added a commit that referenced this issue Oct 20, 2022
@khuey
Copy link
Collaborator

khuey commented Oct 20, 2022

I did noexcept (the non-deprecated variants anyways).

at offset <number> hasn't actually made it into the spec yet: itanium-cxx-abi/cxx-abi#47

@khuey khuey closed this as completed in dd8daf5 Oct 20, 2022
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

2 participants