From 70505f05f3954bd4d8850a0ecb943e2dab2795e9 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Mon, 8 Jan 2024 16:05:02 -0500 Subject: mark as signal-safe --- src/stdlib/_Exit.c | 4 ++++ src/stdlib/abort.c | 9 +++------ src/stdlib/quick_exit.c | 3 +++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/stdlib/_Exit.c b/src/stdlib/_Exit.c index b973ebbc..59d045fe 100644 --- a/src/stdlib/_Exit.c +++ b/src/stdlib/_Exit.c @@ -1,12 +1,16 @@ #if 0 #include +#include "_safety.h" #include "_syscall.h" /** cause normal program termination without handlers **/ _Noreturn void _Exit(int status) { long scno = __syscall_lookup(exit); + + SIGNAL_SAFE(1); + for (;;) { __syscall(scno, status); } diff --git a/src/stdlib/abort.c b/src/stdlib/abort.c index fb2578c8..cf968456 100644 --- a/src/stdlib/abort.c +++ b/src/stdlib/abort.c @@ -1,13 +1,13 @@ -#if 0 - #include -#include #include +#include "_safety.h" /** cause abnormal program termination **/ _Noreturn void abort(void) { + SIGNAL_SAFE(1); + for (;;) { raise(SIGABRT); } @@ -26,6 +26,3 @@ IMPLEMENTATION(whether temporary files are removed) IMPLEMENTATION(the value of unsuccessful termination returned to the host environment) STDC(1) */ - - -#endif diff --git a/src/stdlib/quick_exit.c b/src/stdlib/quick_exit.c index 56d4c560..e1f1213a 100644 --- a/src/stdlib/quick_exit.c +++ b/src/stdlib/quick_exit.c @@ -1,11 +1,14 @@ #if 0 #include +#include "_safety.h" #include "_stdlib.h" /** cause normal quick program termination **/ _Noreturn void quick_exit(int status) { + SIGNAL_SAFE(1); + /* execute all at_quick_exit() registered functions in reverse order */ while (__stdlib.at_quick_exit) { __stdlib.at_quick_exit->fn(); -- cgit v1.2.1