void NaClSignalHandlerInit() { int a; /* Build the free list */ for (a = 0; a < MAX_NACL_HANDLERS; a++) { s_SignalNodes[a].next = s_FreeList; s_SignalNodes[a].id = a + 1; s_FreeList = &s_SignalNodes[a]; } NaClSignalHandlerInitPlatform(); #ifdef NACL_STANDALONE /* In stand-alone mode (sel_ldr) we handle all signals. */ NaClSignalHandlerAdd(NaClSignalHandleAll); #else /* * When run in Chrome we handle only signals in untrusted code. * Signals in trusted code are allowed to pass back to Chrome so * that Breakpad can create a minidump when applicable. */ NaClSignalHandlerAdd(NaClSignalHandleUntrusted); #endif if (getenv("NACL_CRASH_TEST") != NULL) { NaClSignalErrorMessage("[CRASH_TEST] Causing crash in NaCl " "trusted code...\n"); /* Clang removes non-volatile NULL pointer references. */ *(volatile int *) 0 = 0; } }
void NaClSignalHandlerInit() { int a; /* return if signals handling is not enabled */ if(!handle_signals) return; /* Build the free list */ for(a = 0; a < MAX_NACL_HANDLERS; a++) { s_SignalNodes[a].next = s_FreeList; s_SignalNodes[a].id = a + 1; s_FreeList = &s_SignalNodes[a]; } NaClSignalHandlerInitPlatform(); /* In stand-alone mode (sel_ldr) we handle all signals. */ NaClSignalHandlerAdd(NaClSignalHandleAll); }