diff options
| author | Mason Reed <mason@vector35.com> | 2024-04-24 18:33:11 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2024-05-03 11:25:32 -0400 |
| commit | 80201094d494278493e2e08f6adc7c2b4c5b0ad6 (patch) | |
| tree | f770620e12d5b8c21155c2a67b3d66e34816b2ed /demangle.cpp | |
| parent | 92a468d7566de31e6867a77c5cf1c64e33792109 (diff) | |
Expose LLVM demangler
Diffstat (limited to 'demangle.cpp')
| -rw-r--r-- | demangle.cpp | 23 |
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) { |
