#include #include #include #include "syscall.h" #include "pthread_impl.h" #include "atomic.h" _Noreturn void abort(void) { struct sigaction abrtaction; sigset_t abrtset; raise(SIGABRT); __block_all_sigs(0); /* Unblock just SIGABRT, and set default handler */ sigemptyset(&abrtset); sigaddset(&abrtset, SIGABRT); sigprocmask(SIG_UNBLOCK, &abrtset, 0); memset(&abrtaction, 0, sizeof(struct sigaction)); abrtaction.sa_handler = SIG_DFL; sigaction(SIGABRT, &abrtaction, NULL); raise(SIGABRT); /* Ok, give up. */ a_crash(); raise(SIGKILL); _Exit(127); }