https://github.com/augusto2112 updated 
https://github.com/llvm/llvm-project/pull/153685

>From 3b98a9b4ac5d2966ff7aa5eaf508c4752219c943 Mon Sep 17 00:00:00 2001
From: Augusto Noronha <anoro...@apple.com>
Date: Thu, 14 Aug 2025 14:05:46 -0700
Subject: [PATCH 1/2] [lldb] Fix CXX's SymbolNameFitsToLanguage matching other
 languages

The current implementation of
CPlusPlusLanguage::SymbolNameFitsToLanguage will return true if there is
any mangling scheme for the symbol, not just C++.

rdar://158352104
---
 .../Language/CPlusPlus/CPlusPlusLanguage.cpp        |  3 ++-
 .../Language/CPlusPlus/CPlusPlusLanguageTest.cpp    | 13 +++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

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));
+}

>From 273ba468fc8e7e9e6d830f7d63e5681a4ad5b7fa Mon Sep 17 00:00:00 2001
From: Augusto Noronha <anoro...@apple.com>
Date: Thu, 14 Aug 2025 14:56:13 -0700
Subject: [PATCH 2/2] Check for msvc

---
 lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index e329cf231db82..b4207439f5285 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -105,8 +105,9 @@ CPlusPlusLanguage::GetFunctionNameInfo(ConstString name) 
const {
 
 bool CPlusPlusLanguage::SymbolNameFitsToLanguage(Mangled mangled) const {
   const char *mangled_name = mangled.GetMangledName().GetCString();
-  return mangled_name && Mangled::GetManglingScheme(mangled_name) ==
-                             Mangled::eManglingSchemeItanium;
+  auto mangling_scheme = Mangled::GetManglingScheme(mangled_name);
+  return mangled_name && (mangling_scheme == Mangled::eManglingSchemeItanium ||
+                          mangling_scheme == Mangled::eManglingSchemeMSVC);
 }
 
 ConstString CPlusPlusLanguage::GetDemangledFunctionNameWithoutArguments(

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to