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