more fixes, prefix filter for export symbols

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@304 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard
2008-08-24 21:54:59 +00:00
parent 4871626af8
commit a47f8cbe9a
4 changed files with 26 additions and 17 deletions

View File

@ -133,9 +133,12 @@ void SignatureDB::Apply(SymbolDB *symbol_db)
symbol_db->Index(); symbol_db->Index();
} }
void SignatureDB::Initialize(SymbolDB *symbol_db) void SignatureDB::Initialize(SymbolDB *symbol_db, const char *prefix)
{ {
std::string prefix_str(prefix);
for (SymbolDB::XFuncMap::const_iterator iter = symbol_db->GetConstIterator(); iter != symbol_db->End(); iter++) for (SymbolDB::XFuncMap::const_iterator iter = symbol_db->GetConstIterator(); iter != symbol_db->End(); iter++)
{
if (iter->second.name.substr(0, prefix_str.size()) == prefix_str)
{ {
DBFunc temp_dbfunc; DBFunc temp_dbfunc;
temp_dbfunc.name = iter->second.name; temp_dbfunc.name = iter->second.name;
@ -143,6 +146,7 @@ void SignatureDB::Initialize(SymbolDB *symbol_db)
database[iter->second.hash] = temp_dbfunc; database[iter->second.hash] = temp_dbfunc;
} }
} }
}
/*static*/ u32 SignatureDB::ComputeCodeChecksum(u32 offsetStart, u32 offsetEnd) /*static*/ u32 SignatureDB::ComputeCodeChecksum(u32 offsetStart, u32 offsetEnd)
{ {

View File

@ -50,7 +50,7 @@ public:
void Clear(); void Clear();
void List(); void List();
void Initialize(SymbolDB *func_db); void Initialize(SymbolDB *func_db, const char *prefix = "");
void Apply(SymbolDB *func_db); void Apply(SymbolDB *func_db);
static u32 ComputeCodeChecksum(u32 offsetStart, u32 offsetEnd); static u32 ComputeCodeChecksum(u32 offsetStart, u32 offsetEnd);

View File

@ -62,7 +62,7 @@ void CBreakPointView::Update()
Symbol *symbol = g_symbolDB.GetSymbolFromAddr(rBP.iAddress); Symbol *symbol = g_symbolDB.GetSymbolFromAddr(rBP.iAddress);
if (symbol) if (symbol)
{ {
temp = wxString::FromAscii("halloj"); //Debugger::GetDescription(rBP.iAddress)); temp = wxString::FromAscii(g_symbolDB.GetDescription(rBP.iAddress));
SetItem(Item, 2, temp); SetItem(Item, 2, temp);
} }
@ -88,7 +88,7 @@ void CBreakPointView::Update()
Symbol *symbol = g_symbolDB.GetSymbolFromAddr(rMemCheck.StartAddress); Symbol *symbol = g_symbolDB.GetSymbolFromAddr(rMemCheck.StartAddress);
if (symbol) if (symbol)
{ {
temp = wxString::FromAscii("bjorn"); //Debugger::GetDescription(rMemCheck.StartAddress)); temp = wxString::FromAscii(g_symbolDB.GetDescription(rMemCheck.StartAddress));
SetItem(Item, 2, temp); SetItem(Item, 2, temp);
} }

View File

@ -348,17 +348,22 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event)
break; break;
case IDM_CREATESIGNATUREFILE: case IDM_CREATESIGNATUREFILE:
{ {
wxTextEntryDialog input_prefix(this, wxString::FromAscii("Only export symbols with prefix:"), wxGetTextFromUserPromptStr, ".");
if (input_prefix.ShowModal() == wxID_OK) {
std::string prefix = input_prefix.GetValue().mb_str();
wxString path = wxFileSelector( wxString path = wxFileSelector(
_T("Save signature as"), wxEmptyString, wxEmptyString, wxEmptyString, _T("Save signature as"), wxEmptyString, wxEmptyString, wxEmptyString,
_T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_SAVE, _T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_SAVE,
this); this);
if (path) { if (path) {
SignatureDB db; SignatureDB db;
db.Initialize(&g_symbolDB); db.Initialize(&g_symbolDB, prefix.c_str());
std::string filename(path.ToAscii()); // PPCAnalyst::SaveSignatureDB( std::string filename(path.ToAscii()); // PPCAnalyst::SaveSignatureDB(
db.Save(path.ToAscii()); db.Save(path.ToAscii());
} }
} }
}
break; break;
case IDM_USESIGNATUREFILE: case IDM_USESIGNATUREFILE:
{ {