Merge branch 'master' of https://github.com/AuroraWright/Luma3DS into Debuffer
This commit is contained in:
commit
32b8cf6172
@ -119,7 +119,6 @@ void main(int argc, char **argv, u32 magicWord)
|
||||
I2C_init();
|
||||
if(isInvalidLoader) error("Launched using an unsupported loader.");
|
||||
|
||||
detectAndProcessExceptionDumps();
|
||||
installArm9Handlers();
|
||||
|
||||
if(memcmp(launchedPath, u"sdmc", 8) == 0)
|
||||
@ -157,6 +156,8 @@ void main(int argc, char **argv, u32 magicWord)
|
||||
error("Launched from an unsupported location: %s.", mountPoint);
|
||||
}
|
||||
|
||||
detectAndProcessExceptionDumps();
|
||||
|
||||
//Attempt to read the configuration file
|
||||
needConfig = readConfig() ? MODIFY_CONFIGURATION : CREATE_CONFIGURATION;
|
||||
|
||||
|
@ -82,3 +82,16 @@ Result HBLDR_PatchExHeaderInfo(ExHeader_Info *exheaderInfo)
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
Result HBLDR_DebugNextApplicationByForce(bool dryRun)
|
||||
{
|
||||
u32* cmdbuf = getThreadCommandBuffer();
|
||||
|
||||
cmdbuf[0] = IPC_MakeHeader(5, 1, 0); // 0x50040
|
||||
cmdbuf[1] = dryRun ? 1 : 0;
|
||||
|
||||
Result rc = svcSendSyncRequest(hbldrHandle);
|
||||
if (R_SUCCEEDED(rc)) rc = cmdbuf[1];
|
||||
|
||||
return rc;
|
||||
}
|
@ -11,3 +11,4 @@ Result HBLDR_LoadProcess(Handle *outCodeSet, u32 textAddr, u32 kernelFlags, u64
|
||||
Result HBLDR_SetTarget(const char* path);
|
||||
Result HBLDR_SetArgv(const void* buffer, size_t size);
|
||||
Result HBLDR_PatchExHeaderInfo(ExHeader_Info *exheaderInfo);
|
||||
Result HBLDR_DebugNextApplicationByForce(bool dryRun);
|
||||
|
@ -318,11 +318,13 @@ void HBLDR_HandleCommands(void *ctx)
|
||||
case 5: // DebugNextApplicationByForce
|
||||
{
|
||||
res = 0;
|
||||
if (gdbServer.referenceCount == 0)
|
||||
res = MAKERESULT(RL_PERMANENT, RS_INVALIDSTATE, RM_LDR, RD_NOT_INITIALIZED);
|
||||
else if (cmdbuf[1] == 0)
|
||||
{
|
||||
GDB_LockAllContexts(&gdbServer);
|
||||
if (nextApplicationGdbCtx != NULL)
|
||||
res = MAKERESULT(RL_PERMANENT, RS_NOP, RM_LDR, RD_ALREADY_DONE);
|
||||
else if (gdbServer.referenceCount == 0)
|
||||
res = MAKERESULT(RL_PERMANENT, RS_INVALIDSTATE, RM_LDR, RD_NOT_INITIALIZED);
|
||||
else
|
||||
{
|
||||
nextApplicationGdbCtx = GDB_SelectAvailableContext(&gdbServer, GDB_PORT_BASE + 3, GDB_PORT_BASE + 4);
|
||||
@ -342,6 +344,7 @@ void HBLDR_HandleCommands(void *ctx)
|
||||
res = MAKERESULT(RL_PERMANENT, RS_OUTOFRESOURCE, RM_LDR, RD_OUT_OF_RANGE);
|
||||
}
|
||||
GDB_UnlockAllContexts(&gdbServer);
|
||||
}
|
||||
cmdbuf[1] = res;
|
||||
cmdbuf[0] = IPC_MakeHeader(5, 1, 0);
|
||||
break;
|
||||
|
@ -174,11 +174,13 @@ void DebuggerMenu_DebugNextApplicationByForce(void)
|
||||
Result res = 0;
|
||||
char buf[256];
|
||||
|
||||
if(initialized)
|
||||
{
|
||||
GDB_LockAllContexts(&gdbServer);
|
||||
|
||||
if (nextApplicationGdbCtx != NULL)
|
||||
strcpy(buf, "Operation already performed.");
|
||||
else if(initialized)
|
||||
else
|
||||
{
|
||||
nextApplicationGdbCtx = GDB_SelectAvailableContext(&gdbServer, GDB_PORT_BASE + 3, GDB_PORT_BASE + 4);
|
||||
if (nextApplicationGdbCtx != NULL)
|
||||
@ -199,9 +201,10 @@ void DebuggerMenu_DebugNextApplicationByForce(void)
|
||||
else
|
||||
strcpy(buf, "Failed to allocate a slot.\nPlease unselect a process in the process list first");
|
||||
}
|
||||
GDB_UnlockAllContexts(&gdbServer);
|
||||
}
|
||||
else
|
||||
strcpy(buf, "Debugger not enabled.");
|
||||
GDB_UnlockAllContexts(&gdbServer);
|
||||
|
||||
do
|
||||
{
|
||||
|
Reference in New Issue
Block a user