summaryrefslogtreecommitdiff
path: root/Source/Core/Common/SymbolDB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/SymbolDB.cpp')
-rw-r--r--Source/Core/Common/SymbolDB.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/Source/Core/Common/SymbolDB.cpp b/Source/Core/Common/SymbolDB.cpp
index 9e91b64457..f558b54ebb 100644
--- a/Source/Core/Common/SymbolDB.cpp
+++ b/Source/Core/Common/SymbolDB.cpp
@@ -48,6 +48,40 @@ Symbol* SymbolDB::GetSymbolFromName(const std::string& name)
return nullptr;
}
+std::vector<Symbol*> SymbolDB::GetSymbolsFromName(const std::string& name)
+{
+ std::vector<Symbol*> symbols;
+
+ for (auto& func : functions)
+ {
+ if (func.second.function_name == name)
+ symbols.push_back(&func.second);
+ }
+
+ return symbols;
+}
+
+Symbol* SymbolDB::GetSymbolFromHash(u32 hash)
+{
+ XFuncPtrMap::iterator iter = checksumToFunction.find(hash);
+ if (iter != checksumToFunction.end())
+ return *iter->second.begin();
+ else
+ return nullptr;
+}
+
+std::vector<Symbol*> SymbolDB::GetSymbolsFromHash(u32 hash)
+{
+ std::vector<Symbol*> symbols;
+
+ for (const auto& iter : checksumToFunction)
+ if (iter.first == hash)
+ for (const auto& symbol : iter.second)
+ symbols.push_back(symbol);
+
+ return symbols;
+}
+
void SymbolDB::AddCompleteSymbol(const Symbol& symbol)
{
functions.emplace(symbol.address, symbol);