diff options
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus')
-rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 13 | ||||
-rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h | 2 |
2 files changed, 7 insertions, 8 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp index 489fa7d0ad9..5886a78a5ef 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -19,6 +19,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Demangle/ItaniumDemangle.h" +#include "lldb/Core/Mangled.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/UniqueCStringMap.h" #include "lldb/DataFormatters/CXXFunctionPointer.h" @@ -238,18 +239,16 @@ std::string CPlusPlusLanguage::MethodName::GetScopeQualifiedName() { return res; } -bool CPlusPlusLanguage::IsCPPMangledName(const char *name) { +bool CPlusPlusLanguage::IsCPPMangledName(llvm::StringRef name) { // FIXME!! we should really run through all the known C++ Language plugins // and ask each one if this is a C++ mangled name - if (name == nullptr) - return false; + Mangled::ManglingScheme scheme = Mangled::GetManglingScheme(name); - // MSVC style mangling - if (name[0] == '?') - return true; + if (scheme == Mangled::eManglingSchemeNone) + return false; - return (name[0] != '\0' && name[0] == '_' && name[1] == 'Z'); + return true; } bool CPlusPlusLanguage::ExtractContextAndIdentifier( diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h index d30e5608073..4ed45bc904c 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h @@ -101,7 +101,7 @@ public: static lldb_private::ConstString GetPluginNameStatic(); - static bool IsCPPMangledName(const char *name); + static bool IsCPPMangledName(llvm::StringRef name); // Extract C++ context and identifier from a string using heuristic matching // (as opposed to |