summaryrefslogtreecommitdiff
path: root/view/pe/peview.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-04-29 20:25:31 -0400
committerMason Reed <mason@vector35.com>2024-05-03 11:25:32 -0400
commit0be4dd25ffd6b0308053d9b5c34987d1452b01a7 (patch)
tree4e498b3925b318143580f1c1cd40e2df9314c17f /view/pe/peview.cpp
parent5010c748879804e7c3433e2453bc4844123d8d9e (diff)
Use LLVM demangler as a fallback for GNU and MS demanglers
Diffstat (limited to 'view/pe/peview.cpp')
-rw-r--r--view/pe/peview.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/view/pe/peview.cpp b/view/pe/peview.cpp
index 19cf7e09..f9f2b77e 100644
--- a/view/pe/peview.cpp
+++ b/view/pe/peview.cpp
@@ -2785,6 +2785,10 @@ void PEView::AddPESymbol(BNSymbolType type, const string& dll, const string& nam
if (!typeRef && m_extractMangledTypes && !GetDefaultPlatform()->GetFunctionByName(rawName))
typeRef = demangledType;
}
+ else if (!m_extractMangledTypes && DemangleLLVM(rawName, demangleName, m_simplifyTemplates)) {
+ shortName = demangleName.GetString();
+ fullName = shortName;
+ }
else
{
m_logger->LogDebug("Failed to demangle: '%s'\n", name.c_str());
@@ -2801,6 +2805,10 @@ void PEView::AddPESymbol(BNSymbolType type, const string& dll, const string& nam
if (!typeRef && m_extractMangledTypes && !GetDefaultPlatform()->GetFunctionByName(rawName))
typeRef = demangledType;
}
+ else if (!m_extractMangledTypes && DemangleLLVM(rawName, demangleName, m_simplifyTemplates)) {
+ shortName = demangleName.GetString();
+ fullName = shortName;
+ }
else
{
m_logger->LogDebug("Failed to demangle name: '%s'\n", rawName.c_str());