fatalSimple -> fatalThrow

This commit is contained in:
fincs 2019-10-25 00:02:36 +02:00
parent 4cd81dcc31
commit 0d526f9aaa
No known key found for this signature in database
GPG Key ID: 62C7609ADA219C60

View File

@ -72,7 +72,7 @@ void __appInit(void)
rc = smInitialize(); rc = smInitialize();
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 1)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 1));
rc = setsysInitialize(); rc = setsysInitialize();
if (R_SUCCEEDED(rc)) { if (R_SUCCEEDED(rc)) {
@ -87,13 +87,13 @@ void __appInit(void)
rc = fsInitialize(); rc = fsInitialize();
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 2)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 2));
} }
void __wrap_exit(void) void __wrap_exit(void)
{ {
// exit() effectively never gets called, so let's stub it out. // exit() effectively never gets called, so let's stub it out.
fatalSimple(MAKERESULT(Module_HomebrewLoader, 39)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 39));
} }
static void* g_heapAddr; static void* g_heapAddr;
@ -138,7 +138,7 @@ static void setupHbHeap(void)
Result rc = svcSetHeapSize(&addr, size); Result rc = svcSetHeapSize(&addr, size);
if (R_FAILED(rc) || addr==NULL) if (R_FAILED(rc) || addr==NULL)
fatalSimple(MAKERESULT(Module_HomebrewLoader, 9)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 9));
g_heapAddr = addr; g_heapAddr = addr;
g_heapSize = size; g_heapSize = size;
@ -157,11 +157,11 @@ static void procHandleReceiveThread(void* arg)
s32 idx = 0; s32 idx = 0;
rc = svcReplyAndReceive(&idx, &session, 1, INVALID_HANDLE, UINT64_MAX); rc = svcReplyAndReceive(&idx, &session, 1, INVALID_HANDLE, UINT64_MAX);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 15)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 15));
HipcParsedRequest r = hipcParseRequest(base); HipcParsedRequest r = hipcParseRequest(base);
if (r.meta.num_copy_handles != 1) if (r.meta.num_copy_handles != 1)
fatalSimple(MAKERESULT(Module_HomebrewLoader, 17)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 17));
g_procHandle = r.data.copy_handles[0]; g_procHandle = r.data.copy_handles[0];
svcCloseHandle(session); svcCloseHandle(session);
@ -217,16 +217,16 @@ static void getOwnProcessHandle(void)
Handle server_handle, client_handle; Handle server_handle, client_handle;
rc = svcCreateSession(&server_handle, &client_handle, 0, 0); rc = svcCreateSession(&server_handle, &client_handle, 0, 0);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 12)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 12));
Thread t; Thread t;
rc = threadCreate(&t, &procHandleReceiveThread, (void*)(uintptr_t)server_handle, NULL, 0x1000, 0x20, 0); rc = threadCreate(&t, &procHandleReceiveThread, (void*)(uintptr_t)server_handle, NULL, 0x1000, 0x20, 0);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 10)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 10));
rc = threadStart(&t); rc = threadStart(&t);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 13)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 13));
hipcMakeRequestInline(armGetTls(), hipcMakeRequestInline(armGetTls(),
.num_copy_handles = 1, .num_copy_handles = 1,
@ -267,21 +267,21 @@ void loadNro(void)
g_procHandle, g_nroAddr + header->segments[0].file_off, ((u64) g_heapAddr) + header->segments[0].file_off, header->segments[0].size); g_procHandle, g_nroAddr + header->segments[0].file_off, ((u64) g_heapAddr) + header->segments[0].file_off, header->segments[0].size);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 24)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 24));
// .rodata // .rodata
rc = svcUnmapProcessCodeMemory( rc = svcUnmapProcessCodeMemory(
g_procHandle, g_nroAddr + header->segments[1].file_off, ((u64) g_heapAddr) + header->segments[1].file_off, header->segments[1].size); g_procHandle, g_nroAddr + header->segments[1].file_off, ((u64) g_heapAddr) + header->segments[1].file_off, header->segments[1].size);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 25)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 25));
// .data + .bss // .data + .bss
rc = svcUnmapProcessCodeMemory( rc = svcUnmapProcessCodeMemory(
g_procHandle, g_nroAddr + header->segments[2].file_off, ((u64) g_heapAddr) + header->segments[2].file_off, rw_size); g_procHandle, g_nroAddr + header->segments[2].file_off, ((u64) g_heapAddr) + header->segments[2].file_off, rw_size);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 26)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 26));
g_nroAddr = g_nroSize = 0; g_nroAddr = g_nroSize = 0;
} }
@ -302,27 +302,27 @@ void loadNro(void)
rc = fsdevMountSdmc(); rc = fsdevMountSdmc();
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 404)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 404));
int fd = open(g_nextNroPath, O_RDONLY); int fd = open(g_nextNroPath, O_RDONLY);
if (fd < 0) if (fd < 0)
fatalSimple(MAKERESULT(Module_HomebrewLoader, 3)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 3));
// Reset NRO path to load hbmenu by default next time. // Reset NRO path to load hbmenu by default next time.
g_nextNroPath[0] = '\0'; g_nextNroPath[0] = '\0';
if (read(fd, start, sizeof(*start)) != sizeof(*start)) if (read(fd, start, sizeof(*start)) != sizeof(*start))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 4)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 4));
if (read(fd, header, sizeof(*header)) != sizeof(*header)) if (read(fd, header, sizeof(*header)) != sizeof(*header))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 4)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 4));
if (header->magic != NROHEADER_MAGIC) if (header->magic != NROHEADER_MAGIC)
fatalSimple(MAKERESULT(Module_HomebrewLoader, 5)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 5));
size_t rest_size = header->size - (sizeof(NroStart) + sizeof(NroHeader)); size_t rest_size = header->size - (sizeof(NroStart) + sizeof(NroHeader));
if (read(fd, rest, rest_size) != rest_size) if (read(fd, rest, rest_size) != rest_size)
fatalSimple(MAKERESULT(Module_HomebrewLoader, 7)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 7));
close(fd); close(fd);
fsdevUnmountAll(); fsdevUnmountAll();
@ -343,7 +343,7 @@ void loadNro(void)
if (header->segments[i].file_off >= header->size || header->segments[i].size > header->size || if (header->segments[i].file_off >= header->size || header->segments[i].size > header->size ||
(header->segments[i].file_off + header->segments[i].size) > header->size) (header->segments[i].file_off + header->segments[i].size) > header->size)
{ {
fatalSimple(MAKERESULT(Module_HomebrewLoader, 6)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 6));
} }
} }
@ -362,28 +362,28 @@ void loadNro(void)
} while (rc == 0xDC01 || rc == 0xD401); } while (rc == 0xDC01 || rc == 0xD401);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 18)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 18));
// .text // .text
rc = svcSetProcessMemoryPermission( rc = svcSetProcessMemoryPermission(
g_procHandle, map_addr + header->segments[0].file_off, header->segments[0].size, Perm_R | Perm_X); g_procHandle, map_addr + header->segments[0].file_off, header->segments[0].size, Perm_R | Perm_X);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 19)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 19));
// .rodata // .rodata
rc = svcSetProcessMemoryPermission( rc = svcSetProcessMemoryPermission(
g_procHandle, map_addr + header->segments[1].file_off, header->segments[1].size, Perm_R); g_procHandle, map_addr + header->segments[1].file_off, header->segments[1].size, Perm_R);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 20)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 20));
// .data + .bss // .data + .bss
rc = svcSetProcessMemoryPermission( rc = svcSetProcessMemoryPermission(
g_procHandle, map_addr + header->segments[2].file_off, rw_size, Perm_Rw); g_procHandle, map_addr + header->segments[2].file_off, rw_size, Perm_Rw);
if (R_FAILED(rc)) if (R_FAILED(rc))
fatalSimple(MAKERESULT(Module_HomebrewLoader, 21)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 21));
u64 nro_size = header->segments[2].file_off + rw_size; u64 nro_size = header->segments[2].file_off + rw_size;
u64 nro_heap_start = ((u64) g_heapAddr) + nro_size; u64 nro_heap_start = ((u64) g_heapAddr) + nro_size;
@ -462,6 +462,6 @@ int main(int argc, char **argv)
getOwnProcessHandle(); getOwnProcessHandle();
loadNro(); loadNro();
fatalSimple(MAKERESULT(Module_HomebrewLoader, 8)); fatalThrow(MAKERESULT(Module_HomebrewLoader, 8));
return 0; return 0;
} }