summaryrefslogtreecommitdiff
path: root/demangle.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-04-24 18:33:11 -0400
committerMason Reed <mason@vector35.com>2024-05-03 11:25:32 -0400
commit80201094d494278493e2e08f6adc7c2b4c5b0ad6 (patch)
treef770620e12d5b8c21155c2a67b3d66e34816b2ed /demangle.cpp
parent92a468d7566de31e6867a77c5cf1c64e33792109 (diff)
Expose LLVM demangler
Diffstat (limited to 'demangle.cpp')
-rw-r--r--demangle.cpp23
1 files changed, 23 insertions, 0 deletions
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<bool>("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<Type>& outType, QualifiedName& outVarName,
BinaryView* view)
{