From 3bafe2fae7a0878598a82777c623edb2faa70b74 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sat, 2 Dec 2023 02:20:17 +0100 Subject: [PATCH] newlib cris: Fix compilation warnings that recent gcc treats as errors For the newlib part, warnings are all from lack of sync between libc/machine/cris/sys/signal.h and libc/include/sys/signal.h. This commit gets them sufficiently in sync again, functionality-wise and declaration-wise. Still, nothing is declared that isn't supported at the system level (i.e. in libgloss system calls and handled by the CRIS simulator in the gdb project). --- newlib/libc/machine/cris/sys/signal.h | 43 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/newlib/libc/machine/cris/sys/signal.h b/newlib/libc/machine/cris/sys/signal.h index 9cb7ba530..7b6f3fa9b 100644 --- a/newlib/libc/machine/cris/sys/signal.h +++ b/newlib/libc/machine/cris/sys/signal.h @@ -12,6 +12,8 @@ extern "C" { #endif #include "_ansi.h" +#include +#include typedef unsigned long sigset_t; @@ -32,21 +34,50 @@ struct sigaction { /* Adjusted to glibc; other values. */ #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ + +#if __POSIX_VISIBLE #define SIG_SETMASK 2 /* set mask with sigprocmask() */ #define SIG_BLOCK 0 /* set of signals to block */ #define SIG_UNBLOCK 1 /* set of signals to, well, unblock */ +int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); +#endif /* __POSIX_VISIBLE */ + +#ifdef _LIBC +int _kill (pid_t, int); +#endif + +#if __POSIX_VISIBLE + +int kill (pid_t, int); +int sigaddset (sigset_t *, const int); +int sigdelset (sigset_t *, const int); +int sigismember (const sigset_t *, int); +int sigfillset (sigset_t *); +int sigemptyset (sigset_t *); + /* These depend upon the type of sigset_t, which right now is always a long.. They're in the POSIX namespace, but are not ANSI. */ -#define sigaddset(what,sig) (*(what) |= (1<<(sig))) -#define sigemptyset(what) (*(what) = 0) +#define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0) +#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0) +#define sigemptyset(what) (*(what) = 0, 0) +#define sigfillset(what) (*(what) = ~(0), 0) +#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0) -int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); +#endif /* __POSIX_VISIBLE */ + +/* Using __MISC_VISIBLE until POSIX Issue 8 is officially released */ +#if __MISC_VISIBLE + +/* POSIX Issue 8 adds sig2str() and str2sig() */ + +#define SIG2STR_MAX 17 /* (sizeof("RTMAX+") + sizeof("4294967295") - 1) */ + +int sig2str(int, char *); +int str2sig(const char *__restrict, int *__restrict); -/* The first argument is really a pid_t, but that's just a typedef'd - int, so let's avoid requiring sys/types only for this declaration. */ -int kill (int, int); +#endif /* __MISC_VISIBLE */ #define SIGHUP 1 #define SIGINT 2 -- 2.43.5