1
0
Fork 0

new setjit args, changes in JIT stuff, better JIT GUI and some fixes

This commit is contained in:
dreg_fr33project 2014-08-10 15:36:51 +02:00
parent 48d7b8bb69
commit 097e57a47f
3 changed files with 101 additions and 18 deletions

View File

@ -116,9 +116,19 @@ static bool _getjit(char* jit, bool jit64)
{
arch dummy;
char jit_tmp[JIT_ENTRY_MAX_SIZE] = "";
if(!dbggetjit(jit_tmp, jit64 ? x64 : x32, &dummy, NULL))
return false;
strcpy(jit, jit_tmp);
if(jit != NULL)
{
if(!dbggetjit(jit_tmp, jit64 ? x64 : x32, &dummy, NULL))
return false;
strcpy(jit, jit_tmp);
}
else
{
char oldjit[MAX_SETTING_SIZE] = "";
if(!BridgeSettingGet("JIT", "Old", (char*) & oldjit))
return false;
}
return true;
}

View File

@ -1516,13 +1516,6 @@ CMDRESULT cbDebugSetJIT(int argc, char* argv[])
{
char path[JIT_ENTRY_DEF_SIZE];
dbggetdefjit(path);
char get_entry[JIT_ENTRY_MAX_SIZE] = "";
if(!dbggetjit(get_entry, notfound, & actual_arch, NULL))
{
dprintf("Error getting JIT %s\n", (actual_arch == x64) ? "x64" : "x32");
return STATUS_ERROR;
}
strcpy_s(oldjit, get_entry);
jit_debugger_cmd = path;
if(!dbgsetjit(jit_debugger_cmd, notfound, & actual_arch, NULL))
@ -1530,12 +1523,47 @@ CMDRESULT cbDebugSetJIT(int argc, char* argv[])
dprintf("Error setting JIT %s\n", (actual_arch == x64) ? "x64" : "x32");
return STATUS_ERROR;
}
if(_stricmp(oldjit, path))
BridgeSettingSet("JIT", "Old", oldjit);
}
else if(argc == 2)
{
if(!_strcmpi(argv[1], "restore"))
if(!_strcmpi(argv[1], "old"))
{
jit_debugger_cmd = oldjit;
if(!BridgeSettingGet("JIT", "Old", jit_debugger_cmd))
{
dputs("There is no old JIT entry stored.");
return STATUS_ERROR;
}
if(!dbgsetjit(jit_debugger_cmd, notfound, & actual_arch, NULL))
{
dprintf("Error setting JIT %s\n", (actual_arch == x64) ? "x64" : "x32");
return STATUS_ERROR;
}
}
else if(!_strcmpi(argv[1], "oldsave"))
{
char path[JIT_ENTRY_DEF_SIZE];
dbggetdefjit(path);
char get_entry[JIT_ENTRY_MAX_SIZE] = "";
if(!dbggetjit(get_entry, notfound, & actual_arch, NULL))
{
dprintf("Error getting JIT %s\n", (actual_arch == x64) ? "x64" : "x32");
return STATUS_ERROR;
}
strcpy_s(oldjit, get_entry);
jit_debugger_cmd = path;
if(!dbgsetjit(jit_debugger_cmd, notfound, & actual_arch, NULL))
{
dprintf("Error setting JIT %s\n", (actual_arch == x64) ? "x64" : "x32");
return STATUS_ERROR;
}
if(_stricmp(oldjit, path))
BridgeSettingSet("JIT", "Old", oldjit);
}
else if(!_strcmpi(argv[1], "restore"))
{
jit_debugger_cmd = oldjit;
@ -1566,13 +1594,22 @@ CMDRESULT cbDebugSetJIT(int argc, char* argv[])
{
readwritejitkey_error_t rw_error;
if(_strcmpi(argv[1], "x64") == 0)
if(!_strcmpi(argv[1], "old"))
{
BridgeSettingSet("JIT", "Old", argv[2]);
dprintf("New OLD JIT stored: %s\n", argv[2]);
return STATUS_CONTINUE;
}
else if(_strcmpi(argv[1], "x64") == 0)
actual_arch = x64;
else if(_strcmpi(argv[1], "x32") == 0)
actual_arch = x32;
else
{
dputs("Unknown JIT entry type. Use x64 or x32 as parameter.");
dputs("Unknown JIT entry type. Use OLD, x64 or x32 as parameter.");
return STATUS_ERROR;
}
@ -1588,7 +1625,7 @@ CMDRESULT cbDebugSetJIT(int argc, char* argv[])
}
else
{
dputs("Error unknown parameters. Use x86 or x64 as parameter.");
dputs("Error unknown parameters. Use restore, x86 or x64 as parameter.");
return STATUS_ERROR;
}
@ -1613,13 +1650,27 @@ CMDRESULT cbDebugGetJIT(int argc, char* argv[])
else
{
readwritejitkey_error_t rw_error;
if(_strcmpi(argv[1], "x64") == 0)
char oldjit[MAX_SETTING_SIZE] = "";
if(_strcmpi(argv[1], "OLD") == 0)
{
if(!BridgeSettingGet("JIT", "Old", (char*) & oldjit))
{
dputs("Error: there is not an OLD JIT entry stored yet.");
return STATUS_ERROR;
}
else
{
dprintf("OLD JIT entry stored: %s\n", oldjit);
return STATUS_CONTINUE;
}
}
else if(_strcmpi(argv[1], "x64") == 0)
actual_arch = x64;
else if(_strcmpi(argv[1], "x32") == 0)
actual_arch = x32;
else
{
dputs("Unknown JIT entry type. Use x64 or x32 as parameter.");
dputs("Unknown JIT entry type. Use OLD, x64 or x32 as parameter.");
return STATUS_ERROR;
}

View File

@ -240,7 +240,10 @@ void SettingsDialog::SaveSettings()
if(bJitOld != settings.miscSetJIT)
{
if(settings.miscSetJIT)
{
DbgCmdExecDirect("setjit oldsave");
DbgCmdExecDirect("setjit");
}
else
DbgCmdExecDirect("setjit restore");
}
@ -357,7 +360,26 @@ void SettingsDialog::on_chkConfirmBeforeAtt_stateChanged(int arg1)
void SettingsDialog::on_chkSetJIT_stateChanged(int arg1)
{
if(arg1 == Qt::Unchecked)
{
if(DbgFunctions()->GetJit)
{
if(!DbgFunctions()->GetJit(NULL, true))
{
QMessageBox msg(QMessageBox::Warning, "ERROR NOT FOUND OLD JIT", "NOT FOUND OLD JIT ENTRY STORED, USE SETJIT COMMAND");
msg.setWindowIcon(QIcon(":/icons/images/compile-warning.png"));
msg.setParent(this, Qt::Dialog);
msg.setWindowFlags(msg.windowFlags() & (~Qt::WindowContextHelpButtonHint));
msg.exec();
settings.miscSetJIT = true;
}
else
settings.miscSetJIT = false;
ui->chkSetJIT->setCheckState(bool2check(settings.miscSetJIT));
}
settings.miscSetJIT = false;
}
else
settings.miscSetJIT = true;
}