This is the mail archive of the newlib-cvs@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[newlib-cygwin] Feature test macros overhaul: signal.h


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=5c78499ae2ae6ac28854b43a1ad73d917b40c62d

commit 5c78499ae2ae6ac28854b43a1ad73d917b40c62d
Author: Yaakov Selkowitz <yselkowi@redhat.com>
Date:   Mon Mar 14 16:39:56 2016 -0500

    Feature test macros overhaul: signal.h
    
    Use proper internal macros for BSD sig_t and GNU sighandler_t.
    
    sigaltstack and friends are XSI even in SUSv4 but in glibc are
    nonetheless handled as POSIX.1-2008 (not 2001).
    
    The requirement for the ucontext_t typedef in signal.h was XSI prior to
    POSIX.1-2008.
    
    Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>

Diff:
---
 newlib/libc/include/signal.h     |  7 +++++--
 newlib/libc/include/sys/signal.h | 19 ++++++-------------
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/newlib/libc/include/signal.h b/newlib/libc/include/signal.h
index 8c50a2e..0324ae7 100644
--- a/newlib/libc/include/signal.h
+++ b/newlib/libc/include/signal.h
@@ -2,15 +2,18 @@
 #define _SIGNAL_H_
 
 #include "_ansi.h"
+#include <sys/cdefs.h>
 #include <sys/signal.h>
 
 _BEGIN_STD_C
 
 typedef int	sig_atomic_t;		/* Atomic entity type (ANSI) */
-#ifndef _POSIX_SOURCE
+#if __BSD_VISIBLE
 typedef _sig_func_ptr sig_t;		/* BSD naming */
+#endif
+#if __GNU_VISIBLE
 typedef _sig_func_ptr sighandler_t;	/* glibc naming */
-#endif /* !_POSIX_SOURCE */
+#endif
 
 #define SIG_DFL ((_sig_func_ptr)0)	/* Default action */
 #define SIG_IGN ((_sig_func_ptr)1)	/* Ignore action */
diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h
index 3ff0eb7..d12d42f 100644
--- a/newlib/libc/include/sys/signal.h
+++ b/newlib/libc/include/sys/signal.h
@@ -13,8 +13,6 @@ extern "C" {
 #include <sys/_sigset.h>
 #include <sys/_timespec.h>
 
-/* #ifndef __STRICT_ANSI__*/
-
 #if !defined(_SIGSET_T_DECLARED)
 #define	_SIGSET_T_DECLARED
 typedef	__sigset_t	sigset_t;
@@ -77,7 +75,7 @@ typedef struct {
 #define SA_NOCLDSTOP 0x1   /* Do not generate SIGCHLD when children stop */
 #define SA_SIGINFO   0x2   /* Invoke the signal catching function with */
                            /*   three arguments instead of one. */
-#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
+#if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809
 #define SA_ONSTACK   0x4   /* Signal delivery will be on a separate stack. */
 #endif
 
@@ -125,7 +123,7 @@ struct sigaction
 };
 #endif /* defined(__rtems__) */
 
-#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
+#if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809
 /*
  * Minimum and default signal stack constants. Allow for target overrides
  * from <sys/features.h>.
@@ -187,7 +185,7 @@ int _EXFUN(_kill, (pid_t, int));
 
 int _EXFUN(kill, (pid_t, int));
 
-#if defined(__CYGWIN__) || defined(__rtems__)
+#if __BSD_VISIBLE || __XSI_VISIBLE >= 4
 int _EXFUN(killpg, (pid_t, int));
 int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
 int _EXFUN(sigaddset, (sigset_t *, const int));
@@ -198,12 +196,11 @@ int _EXFUN(sigemptyset, (sigset_t *));
 int _EXFUN(sigpending, (sigset_t *));
 int _EXFUN(sigsuspend, (const sigset_t *));
 int _EXFUN(sigpause, (int));
+#endif
 
-#if defined(__CYGWIN__) || defined(__rtems__)
-#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
+#if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809
 int _EXFUN(sigaltstack, (const stack_t *__restrict, stack_t *__restrict));
 #endif
-#endif
 
 #if defined(_POSIX_THREADS)
 #ifdef __CYGWIN__
@@ -230,10 +227,6 @@ int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value));
 
 #endif /* defined(_POSIX_REALTIME_SIGNALS) */
 
-#endif /* defined(__CYGWIN__) || defined(__rtems__) */
-
-/* #endif __STRICT_ANSI__ */
-
 #if defined(___AM29K__)
 /* These all need to be defined for ANSI C, but I don't think they are
    meaningful.  */
@@ -354,7 +347,7 @@ int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value));
 #endif
 
 #if defined(__CYGWIN__)
-#if __POSIX_VISIBLE >= 200809
+#if __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809
 #include <sys/ucontext.h>
 #endif
 #endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]