mirror of
https://github.com/switchbrew/nx-hbloader.git
synced 2025-06-20 21:12:39 +02:00
Add debugger svcBreak pre/post NRO load/unload hooks
This commit is contained in:
parent
5ce1d33b7d
commit
c69c6a9e0d
@ -288,6 +288,8 @@ void loadNro(void)
|
||||
rw_size = header->segments[2].size + header->bss_size;
|
||||
rw_size = (rw_size+0xFFF) & ~0xFFF;
|
||||
|
||||
svcBreak(BreakReason_NotificationOnlyFlag | BreakReason_PreUnloadDll, g_nroAddr, g_nroSize);
|
||||
|
||||
// .text
|
||||
rc = svcUnmapProcessCodeMemory(
|
||||
g_procHandle, g_nroAddr + header->segments[0].file_off, ((u64) g_heapAddr) + header->segments[0].file_off, header->segments[0].size);
|
||||
@ -309,6 +311,8 @@ void loadNro(void)
|
||||
if (R_FAILED(rc))
|
||||
fatalThrow(MAKERESULT(Module_HomebrewLoader, 26));
|
||||
|
||||
svcBreak(BreakReason_NotificationOnlyFlag | BreakReason_PostUnloadDll, g_nroAddr, g_nroSize);
|
||||
|
||||
g_nroAddr = g_nroSize = 0;
|
||||
}
|
||||
|
||||
@ -320,6 +324,8 @@ void loadNro(void)
|
||||
|
||||
memcpy(g_argv, g_nextArgv, sizeof g_argv);
|
||||
|
||||
svcBreak(BreakReason_NotificationOnlyFlag | BreakReason_PreLoadDll, (uintptr_t)g_argv, sizeof(g_argv));
|
||||
|
||||
uint8_t *nrobuf = (uint8_t*) g_heapAddr;
|
||||
|
||||
NroStart* start = (NroStart*) (nrobuf + 0);
|
||||
@ -463,6 +469,8 @@ void loadNro(void)
|
||||
g_nroAddr = (u64)map_addr;
|
||||
g_nroSize = nro_size;
|
||||
|
||||
svcBreak(BreakReason_NotificationOnlyFlag | BreakReason_PostLoadDll, g_nroAddr, g_nroSize);
|
||||
|
||||
memset(__stack_top - STACK_SIZE, 0, STACK_SIZE);
|
||||
|
||||
extern NORETURN void nroEntrypointTrampoline(u64 entries_ptr, u64 handle, u64 entrypoint);
|
||||
|
Loading…
Reference in New Issue
Block a user