summaryrefslogtreecommitdiff
path: root/Source/Core/Common/SymbolDB.cpp
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2017-01-13 10:05:32 +1300
committerGitHub <noreply@github.com>2017-01-13 10:05:32 +1300
commit5790f15be8e653561b4da2055432c1720c4c4ffc (patch)
tree98d9fd83debef5abb310bd5b7c7ad5368c3472bf /Source/Core/Common/SymbolDB.cpp
parent9838afea41186d8049f92eacee80876e4e3f99fe (diff)
parent8d812db9ad31c7104760612375e43e2fe79428ca (diff)
Merge pull request #4299 from sepalani/hle_symbols
SymbolDB: Multiple symbols detection allowed
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);