[Lldb-commits] [lldb] [LLDB] Handle i686 mingw32 mangling prefix (PR #160930)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 30 03:18:28 PDT 2025
Michael137 wrote:
> I think it's plausible that `llvm/lib/Demangle` also just accepts `__Z` as itanium prefix - which I presume that this PR does (I haven't had time to look at the code yet).
It actually does (which is why on macOS you can pass `__Z` symbols to `c++filt` and it works just fine: https://github.com/llvm/llvm-project/pull/106233).
The problem here is that LLDB tries to distinguish Itanium symbols from non-Itanium ones, and it uses `_Z` definitively. I don't think there's much harm in adding to that list `__Z`, basically forwarding the responsibility of stripping the symbol to the demangler (which is what other tools already do anyway). I just wanted to make sure we don't bandage over another bug. But it sounds like this is just a new issue specific to how mangled names get emitted for MSVC.
E.g., on Darwin (another platform where a leading underscore is added), we don't run into this issue. I think that's because we strip the leading underscore before putting it into DWARF. But it sounds like MSVC doesn't do that.
So TL;DR, happy to not do the stripping and adjust the `Mangled::GetManglingScheme` code.
https://github.com/llvm/llvm-project/pull/160930
More information about the lldb-commits
mailing list