From 80201094d494278493e2e08f6adc7c2b4c5b0ad6 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Wed, 24 Apr 2024 18:33:11 -0400 Subject: Expose LLVM demangler --- demangle.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'demangle.cpp') diff --git a/demangle.cpp b/demangle.cpp index 56f4ba90..fbe39672 100644 --- a/demangle.cpp +++ b/demangle.cpp @@ -3,6 +3,29 @@ using namespace std; namespace BinaryNinja { + bool DemangleLLVM(const std::string& mangledName, QualifiedName& outVarName, + BinaryView* view) + { + const bool simplify = Settings::Instance()->Get("analysis.types.templateSimplifier", view); + return DemangleLLVM(mangledName, outVarName, simplify); + } + + bool DemangleLLVM(const std::string& mangledName, QualifiedName& outVarName, + const bool simplify) + { + BNType* localType = nullptr; + char** localVarName = nullptr; + size_t localSize = 0; + if (!BNDemangleLLVM(mangledName.c_str(), &localVarName, &localSize, simplify)) + return false; + for (size_t i = 0; i < localSize; i++) + { + outVarName.push_back(localVarName[i]); + } + BNFreeDemangledName(&localVarName, localSize); + return true; + } + bool DemangleMS(Architecture* arch, const std::string& mangledName, Ref& outType, QualifiedName& outVarName, BinaryView* view) { -- cgit v1.3.1