diff options
| author | Matthew Parlane <parlane@gmail.com> | 2017-01-13 10:05:32 +1300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-13 10:05:32 +1300 |
| commit | 5790f15be8e653561b4da2055432c1720c4c4ffc (patch) | |
| tree | 98d9fd83debef5abb310bd5b7c7ad5368c3472bf /Source/Core/Common/SymbolDB.cpp | |
| parent | 9838afea41186d8049f92eacee80876e4e3f99fe (diff) | |
| parent | 8d812db9ad31c7104760612375e43e2fe79428ca (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.cpp | 34 |
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); |
