summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/SymbolDB.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2009-06-21 08:39:21 +0000
committerhrydgard <hrydgard@gmail.com>2009-06-21 08:39:21 +0000
commitaecaf271f1fe98cba1ebc8228ff9eff3e39e72c5 (patch)
tree4c82001793b35149ae81fcb483f13b22d3b6fa11 /Source/Core/Common/Src/SymbolDB.cpp
parent80217a6ed718d15c75784090340cd3ddd9432f96 (diff)
New DSP debugger: step one. (not ready yet, but try loading zelda WW and look at the dsp debugger..).
Had to shuffle around quite a lot of code to be able to extract the CodeView into a library nicely so it can be used from both the main dolphin and the LLE plugin... also extracted the symboldb code. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3517 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/SymbolDB.cpp')
-rw-r--r--Source/Core/Common/Src/SymbolDB.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/Source/Core/Common/Src/SymbolDB.cpp b/Source/Core/Common/Src/SymbolDB.cpp
new file mode 100644
index 0000000000..86161b6b9c
--- /dev/null
+++ b/Source/Core/Common/Src/SymbolDB.cpp
@@ -0,0 +1,59 @@
+// Copyright (C) 2003-2008 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#include "SymbolDB.h"
+
+
+void SymbolDB::List()
+{
+ for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++)
+ {
+ DEBUG_LOG(HLE,"%s @ %08x: %i bytes (hash %08x) : %i calls", iter->second.name.c_str(), iter->second.address, iter->second.size, iter->second.hash,iter->second.numCalls);
+ }
+ INFO_LOG(HLE,"%i functions known in this program above.", functions.size());
+}
+
+void SymbolDB::Clear(const char *prefix)
+{
+ // TODO: honor prefix
+ functions.clear();
+ checksumToFunction.clear();
+}
+
+void SymbolDB::Index()
+{
+ int i = 0;
+ for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++)
+ {
+ iter->second.index = i++;
+ }
+}
+
+Symbol *SymbolDB::GetSymbolFromName(const char *name)
+{
+ for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++)
+ {
+ if (!strcmp(iter->second.name.c_str(), name))
+ return &iter->second;
+ }
+ return 0;
+}
+
+void SymbolDB::AddCompleteSymbol(const Symbol &symbol)
+{
+ functions.insert(std::pair<u32, Symbol>(symbol.address, symbol));
+}