[RFC] sigsetjmp/siglongjmp on cygwin

Keith Seitz keiths@cygnus.com
Wed Aug 1 14:01:00 GMT 2001


Hi,

I would like to discuss what to do about siglongjmp/sigsetjmp. These
functions were recently added to configure.in:

2001-07-12  Mark Kettenis  <kettenis@gnu.org>

        * configure.in: Add check for sigsetjmp.

To make a long story short, I spent a lot of time trying to track this
down. The crux of it is that sigsetjmp/siglongjmp _do_ exist on cygwin,
but they are not reliable. I don't know why, but they are not.

Until the above change, cygwin used setjmp/longjmp, and this patch will
force gdb to use them again.

I'm open to better ways of dealing with this.
Keith

Possible ChangeLog
2001-08-01  Keith Seitz  <keiths@redhat.com>

	* configure.in: Don't use sigsetjmp/siglongjmp on
	cygwin, even if it is available: it doesn't work.
	* configure: Regenerate.

Possible Patch
Index: configure.in
===================================================================
RCS file: /cvs/src/src/gdb/configure.in,v
retrieving revision 1.66
diff -u -p -r1.66 configure.in
--- configure.in	2001/07/12 13:48:45	1.66
+++ configure.in	2001/08/01 21:01:29
@@ -137,11 +137,16 @@ AC_FUNC_ALLOCA

 # Check if sigsetjmp is available.  Using AC_CHECK_FUNCS won't do
 # since sigsetjmp might only be defined as a macro.
+# Cygwin has sigsetjmp/siglongjmp, but it doesn't seem to work...
 AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
 [AC_TRY_COMPILE([
 #include <setjmp.h>
 ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
-gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
+[case "${host}" in
+  *cygwin*) gdb_cv_func_sigsetjmp=no ;;
+  *) gdb_cv_func_sigsetjmp=yes ;;
+esac
+], gdb_cv_func_sigsetjmp=no)])
 if test $gdb_cv_func_sigsetjmp = yes; then
   AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
 fi




More information about the Gdb-patches mailing list