From 4e52fd754c2ed00f7cae12f9cdb5787145e95a1d Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Thu, 15 Jun 2017 14:09:39 +0100 Subject: [PATCH] Fix guard for siginfo_t and pthread_t definition Commit 8a3b3bb4d7224d419cc1a4af60ccf7e70edc876b changed the guard on some functions from _POSIX_THREADS to __POSIX_VISIBLE. As a consequence, some use of siginfo_t and pthread_t became visible under configurations where _POSIX_THREADS is unset but __POSIX_VISIBLE is. Build then fails because the definition of those types are still unavailable. This commit make those type definition visible for __POSIX_VISIBLE configurations. This requires moving the siginfo_t definition out of the RTEMS specific definitions in sys/signal.h while still guarding it against cygwin case. --- newlib/libc/include/sys/_pthreadtypes.h | 4 ++-- newlib/libc/include/sys/signal.h | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/newlib/libc/include/sys/_pthreadtypes.h b/newlib/libc/include/sys/_pthreadtypes.h index b29f50c..75e9e1c 100644 --- a/newlib/libc/include/sys/_pthreadtypes.h +++ b/newlib/libc/include/sys/_pthreadtypes.h @@ -18,7 +18,7 @@ #ifndef _SYS__PTHREADTYPES_H_ #define _SYS__PTHREADTYPES_H_ -#if defined(_POSIX_THREADS) +#if defined(_POSIX_THREADS) || __POSIX_VISIBLE >= 199506 #include @@ -195,7 +195,7 @@ typedef struct { } pthread_once_t; /* dynamic package initialization */ #define _PTHREAD_ONCE_INIT { 1, 0 } /* is initialized and not run */ -#endif /* defined(_POSIX_THREADS) */ +#endif /* defined(_POSIX_THREADS) || __POSIX_VISIBLE >= 199506 */ /* POSIX Barrier Types */ diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h index da064cd..ab35718 100644 --- a/newlib/libc/include/sys/signal.h +++ b/newlib/libc/include/sys/signal.h @@ -18,9 +18,11 @@ extern "C" { typedef __sigset_t sigset_t; #endif -#if defined(__rtems__) +#if defined(__CYGWIN__) +#include +#else -#if defined(_POSIX_REALTIME_SIGNALS) +#if defined(_POSIX_REALTIME_SIGNALS) || __POSIX_VISIBLE >= 199309 /* sigev_notify values NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD. */ @@ -68,7 +70,9 @@ typedef struct { int si_code; /* Cause of the signal */ union sigval si_value; /* Signal value */ } siginfo_t; -#endif +#endif /* defined(_POSIX_REALTIME_SIGNALS) || __POSIX_VISIBLE >= 199309 */ + +#if defined(__rtems__) /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */ @@ -108,9 +112,8 @@ struct sigaction { #define sa_sigaction _signal_handlers._sigaction #endif -#elif defined(__CYGWIN__) -#include -#else +#else /* defined(__rtems__) */ + #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ typedef void (*_sig_func_ptr)(int); @@ -122,6 +125,7 @@ struct sigaction int sa_flags; }; #endif /* defined(__rtems__) */ +#endif /* defined(__CYGWIN__) */ #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 /* -- 1.9.1