[PATCH 2/2] stdlib: Make abort AS-safe (BZ 26275)

Florian Weimer fweimer@redhat.com
Tue Aug 1 08:10:21 GMT 2023


* Adhemerval Zanella via Libc-alpha:

> diff --git a/sysdeps/generic/internal-signals.h b/sysdeps/generic/internal-signals.h
> index e2e9f9fd49..1c0f7b2e6c 100644
> --- a/sysdeps/generic/internal-signals.h
> +++ b/sysdeps/generic/internal-signals.h
> @@ -42,7 +42,31 @@ clear_internal_signals (sigset_t *set)
>  typedef sigset_t internal_sigset_t;
>  
>  #define internal_sigemptyset(__s)            __sigemptyset (__s)
> +#define internal_sigfillset(__s)             __sigfillset (__s)
>  #define internal_sigaddset(__s, __i)         __sigaddset (__s, __i)
>  #define internal_sigprocmask(__h, __s, __o)  __sigprocmask (__h, __s, __o)
>  
> +static inline void
> +internal_signal_block_all (internal_sigset_t *oset)
> +{
> +  internal_sigset_t set;
> +  internal_sigfillset (&set);
> +  internal_sigprocmask (SIG_BLOCK, &set, oset);
> +}
> +
> +static inline void
> +internal_signal_restore_set (const internal_sigset_t *set)
> +{
> +  internal_sigprocmask (SIG_SETMASK, set, NULL);
> +}
> +
> +static inline void
> +internal_signal_unblock_signal (int sig)
> +{
> +  internal_sigset_t set;
> +  internal_sigemptyset (&set);
> +  internal_sigaddset (&set, sig);
> +  internal_sigprocmask (SIG_UNBLOCK, &set, NULL);
> +}
> +
>  #endif /* __INTERNAL_SIGNALS_H  */

This should probably go into a separate patch.  I recall writing a
similar patch, can't find it right now.

Thanks,
Florian



More information about the Libc-alpha mailing list