Define sigsetjmp/siglongjmp only if __POSIX_VISIBLE

Ken Brown kbrown@cornell.edu
Mon Aug 7 12:43:00 GMT 2017


sigsetjmp and siglongjmp are POSIX extensions but are not properly 
guarded in machine/setjmp.h.  This leads to the problem reported here:

    https://cygwin.com/ml/cygwin/2017-08/msg00060.html

Patch attached.

Ken
-------------- next part --------------
From 50cceaf0e1d33ddf3fc62399bc15761af93fa29d Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Sun, 6 Aug 2017 17:40:43 -0400
Subject: [PATCH] Define sigsetjmp/siglongjmp only if __POSIX_VISIBLE

---
 newlib/libc/include/machine/setjmp.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
index 2b4dd8b91..e6c3142ed 100644
--- a/newlib/libc/include/machine/setjmp.h
+++ b/newlib/libc/include/machine/setjmp.h
@@ -368,7 +368,7 @@ typedef	int jmp_buf[_JBLEN];
 
 _END_STD_C
 
-#if defined(__CYGWIN__) || defined(__rtems__)
+#if (defined(__CYGWIN__) || defined(__rtems__)) && __POSIX_VISIBLE
 #include <signal.h>
 
 #ifdef __cplusplus
@@ -450,4 +450,4 @@ extern int _setjmp (jmp_buf);
 #ifdef __cplusplus
 }
 #endif
-#endif /* __CYGWIN__ or __rtems__ */
+#endif /* (__CYGWIN__ or __rtems__) and __POSIX_VISIBLE */
-- 
2.13.2



More information about the Newlib mailing list