[Lldb-commits] [PATCH] D148846: [lldb] Let Mangled decide whether a name is mangled or not

Jonas Devlieghere via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 20 14:48:40 PDT 2023


JDevlieghere created this revision.
JDevlieghere added reviewers: jingham, labath, jasonmolenda, aprantl.
Herald added a subscriber: kristof.beyls.
Herald added a reviewer: shafik.
Herald added a project: All.
JDevlieghere requested review of this revision.

We have a handful of places in LLDB where we try to outsmart the logic in Mangled to determine whether a string is mangled or not. There's at least one place (*) where we were getting this wrong and this causes a subtle bug. The `cstring_is_mangled` is cheap enough that we should always rely on it to determine whether a string is mangled or not.

(*) ObjectFileMachO assumes that a symbol that starts with a double underscore (such as `__pthread_kill`)  is mangled. That's mostly harmless, until you want to use `function.name-without-args` in your frame format. For this formatter, we call `Symbol::GetNameNoArguments()` which is a wrapper around `Mangled::GetName(Mangled::ePreferDemangledWithoutArguments)`. The latter will first try using the appropriate language plugin to get the demangled name without arguments, but if that fails, it falls back to returning the demangled name. Because we forced Mangled to treat the symbol as a mangled name while it's not, there's no demangled name, and your frames don't show symbols at all. Alternatively, I could've worked around the issue by checking if we have a demangeld at all, but that's just working around the bug.


https://reviews.llvm.org/D148846

Files:
  lldb/include/lldb/Core/Mangled.h
  lldb/source/Core/Mangled.cpp
  lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
  lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp
  lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
  lldb/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148846.515478.patch
Type: text/x-patch
Size: 8078 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230420/f81357a7/attachment.bin>


More information about the lldb-commits mailing list