diff options
| author | Mason Reed <mason@vector35.com> | 2024-04-29 20:25:31 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2024-05-03 11:25:32 -0400 |
| commit | 0be4dd25ffd6b0308053d9b5c34987d1452b01a7 (patch) | |
| tree | 4e498b3925b318143580f1c1cd40e2df9314c17f | |
| parent | 5010c748879804e7c3433e2453bc4844123d8d9e (diff) | |
Use LLVM demangler as a fallback for GNU and MS demanglers
| -rw-r--r-- | view/elf/elfview.cpp | 4 | ||||
| -rw-r--r-- | view/macho/machoview.cpp | 4 | ||||
| -rw-r--r-- | view/pe/peview.cpp | 8 |
3 files changed, 16 insertions, 0 deletions
diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp index 5d1b5cf2..0609fafa 100644 --- a/view/elf/elfview.cpp +++ b/view/elf/elfview.cpp @@ -2370,6 +2370,10 @@ void ElfView::DefineElfSymbol(BNSymbolType type, const string& incomingName, uin if (!typeRef && m_extractMangledTypes && !GetDefaultPlatform()->GetFunctionByName(rawName)) typeRef = demangledType; } + else if (!m_extractMangledTypes && DemangleLLVM(rawName, varName, m_simplifyTemplates)) { + shortName = varName.GetString(); + fullName = shortName; + } else { m_logger->LogDebug("Failed to demangle name: '%s'\n", rawName.c_str()); diff --git a/view/macho/machoview.cpp b/view/macho/machoview.cpp index 8a220515..5f7b3f94 100644 --- a/view/macho/machoview.cpp +++ b/view/macho/machoview.cpp @@ -2334,6 +2334,10 @@ Ref<Symbol> MachoView::DefineMachoSymbol( if (!typeRef && m_extractMangledTypes && !GetDefaultPlatform()->GetFunctionByName(rawName)) typeRef = demangledType; } + else if (!m_extractMangledTypes && DemangleLLVM(rawName, varName, m_simplifyTemplates)) { + shortName = varName.GetString(); + fullName = shortName; + } else { m_logger->LogDebug("Failed to demangle name: '%s'\n", rawName.c_str()); 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()); |
