From eb3f08acf86feff10cfecc235758a1cc07da29cf Mon Sep 17 00:00:00 2001
From: Corinna Vinschen <corinna@vinschen.de>
Date: Sat, 21 Jun 2008 18:48:45 +0000
Subject: [PATCH] 	* libc/include/machine/setjmp.h (_longjmp): Define as
 function on 	Cygwin. 	(_setjmp): Ditto.

---
 newlib/ChangeLog                     | 6 ++++++
 newlib/libc/include/machine/setjmp.h | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 0d19e35d4..c3e5a15d6 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-21  Corinna Vinschen  <corinna@vinschen.de>
+
+	* libc/include/machine/setjmp.h (_longjmp): Define as function on
+	Cygwin.
+	(_setjmp): Ditto.
+
 2008-06-18  Eric Blake  <ebb9@byu.net>
 
 	Per Posix, strsignal returns non-const char*.
diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
index 4e850cf2f..9d798ffb6 100644
--- a/newlib/libc/include/machine/setjmp.h
+++ b/newlib/libc/include/machine/setjmp.h
@@ -307,11 +307,16 @@ typedef int sigjmp_buf[_JBLEN+2];
 
 #endif
 
-/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility.  These
+/* POSIX _setjmp/_longjmp, maintained for XSI compatibility.  These
    are equivalent to sigsetjmp/siglongjmp when not saving the signal mask.
    New applications should use sigsetjmp/siglongjmp instead. */
+#ifdef __CYGWIN__
+extern void _longjmp(jmp_buf, int);
+extern int _setjmp(jmp_buf);
+#else
 #define _setjmp(env)		sigsetjmp ((env), 0)
 #define _longjmp(env, val)	siglongjmp ((env), (val))
+#endif
 
 #ifdef __cplusplus
 }