[Lldb-commits] [lldb] [lldb] Fix CXX's SymbolNameFitsToLanguage matching other languages (PR #153685)
via lldb-commits
lldb-commits at lists.llvm.org
Thu Aug 14 14:12:08 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Augusto Noronha (augusto2112)
<details>
<summary>Changes</summary>
The current implementation of
CPlusPlusLanguage::SymbolNameFitsToLanguage will return true if the symbol is mangled for any language that lldb knows about.
---
Full diff: https://github.com/llvm/llvm-project/pull/153685.diff
2 Files Affected:
- (modified) lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp (+2-1)
- (modified) lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp (+13)
``````````diff
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 3118ff151d1cf..e329cf231db82 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -105,7 +105,8 @@ CPlusPlusLanguage::GetFunctionNameInfo(ConstString name) const {
bool CPlusPlusLanguage::SymbolNameFitsToLanguage(Mangled mangled) const {
const char *mangled_name = mangled.GetMangledName().GetCString();
- return mangled_name && Mangled::IsMangledName(mangled_name);
+ return mangled_name && Mangled::GetManglingScheme(mangled_name) ==
+ Mangled::eManglingSchemeItanium;
}
ConstString CPlusPlusLanguage::GetDemangledFunctionNameWithoutArguments(
diff --git a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
index 6eeb4f54952b9..af01303cc4689 100644
--- a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
+++ b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
@@ -397,3 +397,16 @@ TEST(CPlusPlusLanguage, CPlusPlusNameParser) {
// Don't crash.
CPlusPlusNameParser((const char *)nullptr);
}
+
+TEST(CPlusPlusLanguage, DoesNotMatchCxx) {
+ // Test that a symbol name that is NOT C++ does not match C++.
+
+ SubsystemRAII<CPlusPlusLanguage> lang;
+ Language *CPlusPlusLang =
+ Language::FindPlugin(lldb::eLanguageTypeC_plus_plus);
+
+ EXPECT_TRUE(CPlusPlusLang != nullptr);
+
+ Mangled swiftSymbol("$sS");
+ EXPECT_FALSE(CPlusPlusLang->SymbolNameFitsToLanguage(swiftSymbol));
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/153685
More information about the lldb-commits
mailing list