From: <cli...@li...> - 2008-05-26 19:08:02
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/src spvw_sigterm.d, 1.10, 1.11 spvw_sigint.d, 1.16, 1.17 ChangeLog, 1.6209, 1.6210 (Sam Steingold) 2. clisp/src lispbibl.d,1.784,1.785 ChangeLog,1.6210,1.6211 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Sun, 25 May 2008 19:46:56 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src spvw_sigterm.d, 1.10, 1.11 spvw_sigint.d, 1.16, 1.17 ChangeLog, 1.6209, 1.6210 To: cli...@li... Message-ID: <E1K...@ma...> Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv11696/src Modified Files: spvw_sigterm.d spvw_sigint.d ChangeLog Log Message: (signal_handler_prepare_for_lisp): extracted from react_on_sigint() (react_on_sigint): call it (quit_on_signal): ditto Index: spvw_sigterm.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_sigterm.d,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- spvw_sigterm.d 22 May 2008 21:23:01 -0000 1.10 +++ spvw_sigterm.d 25 May 2008 19:46:53 -0000 1.11 @@ -44,6 +44,7 @@ local bool quit_on_signal_in_progress = false; /* print the "exiting" message and quit */ local void quit_on_signal (int sig) { + #ifndef NO_ASYNC_INTERRUPTS if (quit_on_signal_in_progress) { /* quit without much ado */ /* next signal will bypass this function and kill CLISP instantly: */ uninstall_sigterm_handler(); @@ -52,10 +53,7 @@ return; /* return from signal handler if the signal is blocked */ } quit_on_signal_in_progress = true; - #ifdef HAVE_SAVED_STACK - /* set STACK to a meaningful value: */ - if (saved_STACK != NULL) { setSTACK(STACK = saved_STACK); } - #endif + signal_handler_prepare_for_lisp(sig); pushSTACK(Symbol_value(S(error_output))); fresh_line(&STACK_0); pushSTACK(CLSTEXT("Exiting on signal ")); pushSTACK(STACK_1); funcall(L(write_string),2); /* (write-line "exiting" stderr) */ @@ -64,6 +62,7 @@ terpri(&STACK_0); skipSTACK(1); /* drop *error-output* */ final_exitcode = - sig; quit(); + #endif } /* install error handlers for as many signals as possible */ Index: spvw_sigint.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_sigint.d,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- spvw_sigint.d 25 May 2008 09:11:40 -0000 1.16 +++ spvw_sigint.d 25 May 2008 19:46:53 -0000 1.17 @@ -25,11 +25,9 @@ #ifdef HAVE_SIGNALS -/* React on signal SIGINT: Leave the signal handler and enter a break driver - loop. If this function returns, this means the signal handler should try - again later. */ -local void react_on_sigint (int sig) { /* sig = SIGINT or SIGALRM */ - #ifndef NO_ASYNC_INTERRUPTS +/* this must be done by signal handler before entering lisp. + also used in spvw_sigterm.d */ +local void signal_handler_prepare_for_lisp (int sig) { /* wait, until break is allowed: */ if (!break_sems_cleared()) return; @@ -45,24 +43,29 @@ on our own and hope that it is called by all library- functions (statically linked or via DLL)?? */ - #if (defined(USE_SIGACTION) ? defined(SIGACTION_NEED_UNBLOCK) : defined(SIGNAL_NEED_UNBLOCK)) || (defined(GNU_READLINE) && defined(SIGNALBLOCK_POSIX)) - /* either if handlers, installed with [SIGNAL_NEED_UNBLOCK] and signal(), + #if defined(SIGNALBLOCK_POSIX) && ((defined(USE_SIGACTION) ? defined(SIGACTION_NEED_UNBLOCK) : defined(SIGNAL_NEED_UNBLOCK)) || defined(GNU_READLINE)) + { /* either if handlers, installed with [SIGNAL_NEED_UNBLOCK] and signal(), are called with blocked signal anyway - usually on BSD-systems -, or if other unsecure components [GNU_READLINE] can cause the blocking of the signal on call via sigaction() or similar, we must unblock the right now blocked signal: */ - #if defined(SIGNALBLOCK_POSIX) - { var sigset_t sigblock_mask; sigemptyset(&sigblock_mask); sigaddset(&sigblock_mask,sig); sigprocmask(SIG_UNBLOCK,&sigblock_mask,NULL); } - #endif - #endif - #ifdef HAVE_SAVED_STACK + #endif + #ifdef HAVE_SAVED_STACK /* set STACK to a meaningful value: */ if (saved_STACK != NULL) { setSTACK(STACK = saved_STACK); } - #endif + #endif +} + +/* React on signal SIGINT: Leave the signal handler and enter a break driver + loop. If this function returns, this means the signal handler should try + again later. */ +local void react_on_sigint (int sig) { /* sig = SIGINT or SIGALRM */ + #ifndef NO_ASYNC_INTERRUPTS + signal_handler_prepare_for_lisp(sig); /* jump into a break-loop via 'error': */ error(interrupt_condition,GETTEXT("Ctrl-C: User break")); #endif /* NO_ASYNC_INTERRUPTS */ Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6209 retrieving revision 1.6210 diff -u -d -r1.6209 -r1.6210 --- ChangeLog 25 May 2008 09:11:41 -0000 1.6209 +++ ChangeLog 25 May 2008 19:46:53 -0000 1.6210 @@ -1,3 +1,10 @@ +2008-05-25 Sam Steingold <sd...@gn...> + + * spvw_sigint.d (signal_handler_prepare_for_lisp): extracted from + react_on_sigint() + (react_on_sigint): call it + * spvw_sigterm.d (quit_on_signal): ditto + 2008-05-25 Bruno Haible <br...@cl...> * m4/signal.m4 (CL_SIGNALBLOCK): Remove macro. ------------------------------ Message: 2 Date: Sun, 25 May 2008 20:13:43 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src lispbibl.d,1.784,1.785 ChangeLog,1.6210,1.6211 To: cli...@li... Message-ID: <E1K...@ma...> Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv21442/src Modified Files: lispbibl.d ChangeLog Log Message: (setjmp, longjmp) [HAVE__JMP]: on all autoconf platforms (UNIX & __MINGW32__), use _setjmp and _longjmp whenever they are presen Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.784 retrieving revision 1.785 diff -u -d -r1.784 -r1.785 --- lispbibl.d 19 May 2008 22:08:47 -0000 1.784 +++ lispbibl.d 25 May 2008 20:13:40 -0000 1.785 @@ -1377,8 +1377,10 @@ /* non-local exits */ #include <setjmp.h> -#if defined(UNIX) && defined(HAVE__JMP) && !defined(UNIX_LINUX) && !defined(UNIX_GNU) && !defined(UNIX_BEOS) && !defined(UNIX_CYGWIN32) - /* The following routines are more efficient (don't use with signal-masks): */ +#if (defined(UNIX) || defined(__MINGW32__)) && defined(HAVE__JMP) + /* The "_" routines are more efficient (do not save/restore signal masks, + see http://article.gmane.org/gmane.lisp.clisp.devel/18227 or + http://sourceforge.net/mailarchive/message.php?msg_id=200805251238.10097.bruno%40clisp.org): */ #undef setjmp #undef longjmp #define setjmp _setjmp Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6210 retrieving revision 1.6211 diff -u -d -r1.6210 -r1.6211 --- ChangeLog 25 May 2008 19:46:53 -0000 1.6210 +++ ChangeLog 25 May 2008 20:13:40 -0000 1.6211 @@ -1,5 +1,10 @@ 2008-05-25 Sam Steingold <sd...@gn...> + * lispbibl.d (setjmp, longjmp) [HAVE__JMP]: on all autoconf platforms + (UNIX & __MINGW32__), use _setjmp and _longjmp whenever they are present + +2008-05-25 Sam Steingold <sd...@gn...> + * spvw_sigint.d (signal_handler_prepare_for_lisp): extracted from react_on_sigint() (react_on_sigint): call it ------------------------------ ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 25, Issue 46 ***************************************** |
From: Yaroslav K. <kav...@tu...> - 2008-05-26 20:15:40
|
> Modified Files: > lispbibl.d ChangeLog > Log Message: > (setjmp, longjmp) [HAVE__JMP]: on all autoconf platforms (UNIX & > __MINGW32__), use _setjmp and _longjmp whenever they are presen > mingw, clisp from CVS head config.cache: ... ac_cv_func__longjmp=${ac_cv_func__longjmp=no} ac_cv_func__setjmp=${ac_cv_func__setjmp=yes} ... config.log: ... configure:38242: checking for _setjmp configure:38298: gcc -mno-cygwin -o conftest.exe -O2 conftest.c -lavcall -lcallback >&5 configure:38305: $? = 0 configure:38325: result: yes configure:38333: checking for _longjmp configure:38389: gcc -mno-cygwin -o conftest.exe -O2 conftest.c -lavcall -lcallback >&5 c:/Temp/cc4TL3dx.o:conftest.c:(.text+0x19): undefined reference to `__longjmp' ... $ ./configure ... --cbc ... ... In file included from ../src/eval.d:8270: lightning.c: In function `jit_compile_': lightning.c:3069: error: `setjmp' undeclared (first use in this function) lightning.c:3069: error: (Each undeclared identifier is reported only once lightning.c:3069: error: for each function it appears in.) make: *** [eval.o] Error 1 -- WBR, Yaroslav Kavenchuk. |
From: Sam S. <sd...@gn...> - 2008-05-26 21:43:50
|
> * Yaroslav Kavenchuk <xnirapuhx@ghg.ol> [2008-05-26 23:15:20 +0300]: > > In file included from ../src/eval.d:8270: > lightning.c: In function `jit_compile_': > lightning.c:3069: error: `setjmp' undeclared (first use in this function) > lightning.c:3069: error: (Each undeclared identifier is reported only once > lightning.c:3069: error: for each function it appears in.) > make: *** [eval.o] Error 1 I think this is coming from jitc_finish_eframex which uses "jit_finish(setjmp);" I don't know what it does, my guess is that setjmp is a macro on win32, but it is used in jit_finish as a function. Yann? -- Sam Steingold (http://sds.podval.org/) on Fedora release 8 (Werewolf) http://thereligionofpeace.com http://honestreporting.com http://jihadwatch.org http://openvotingconsortium.org http://dhimmi.com http://pmw.org.il There is Truth, and its value is T. Or just non-NIL. So 0 is True! |
From: Yann D. <yan...@po...> - 2008-05-27 00:21:39
|
Hi, I don't know much about win32, but CLISP is used from CYGWIN, right? Within CYGWIN, setjmp is a define: http://www.google.com/codesearch?hl=en&q=+package:cygwin+setjmp+show:7-gtDPBwy6E:CRG9Mj-FY5k:7t-nWYzUkmQ&sa=N&cd=5&ct=rc&cs_p=http://ftp.ruby-lang.org/pub/ruby/binaries/cygwin/cygwin-1.5.9-1-src.tar.bz2&cs_f=cygwin-1.5.9-1/winsup/mingw/include/setjmp.h Judging from that file, this isn't what's causing the problem. The error message is caused by the actual absence of anything named setjmp. Can the person who's having the problem compile the normal interpreter? On Mon, May 26, 2008 at 5:43 PM, Sam Steingold <sd...@gn...> wrote: > > * Yaroslav Kavenchuk <xnirapuhx@ghg.ol> [2008-05-26 23:15:20 +0300]: > > > > In file included from ../src/eval.d:8270: > > lightning.c: In function `jit_compile_': > > lightning.c:3069: error: `setjmp' undeclared (first use in this function) > > lightning.c:3069: error: (Each undeclared identifier is reported only > once > > lightning.c:3069: error: for each function it appears in.) > > make: *** [eval.o] Error 1 > > I think this is coming from jitc_finish_eframex which uses > "jit_finish(setjmp);" > I don't know what it does, my guess is that setjmp is a macro on win32, > but it is used in jit_finish as a function. > > Yann? > > -- > Sam Steingold (http://sds.podval.org/) on Fedora release 8 (Werewolf) > http://thereligionofpeace.com http://honestreporting.com > http://jihadwatch.org > http://openvotingconsortium.org http://dhimmi.com http://pmw.org.il > There is Truth, and its value is T. Or just non-NIL. So 0 is True! > |
From: Yaroslav K. <kav...@je...> - 2008-05-27 07:11:30
|
Sam Steingold wrote: >> In file included from ../src/eval.d:8270: >> lightning.c: In function `jit_compile_': >> lightning.c:3069: error: `setjmp' undeclared (first use in this > function) >> lightning.c:3069: error: (Each undeclared identifier is reported only > once >> lightning.c:3069: error: for each function it appears in.) >> make: *** [eval.o] Error 1 > > I think this is coming from jitc_finish_eframex which uses > "jit_finish(setjmp);" > I don't know what it does, my guess is that setjmp is a macro on win32, > but it is used in jit_finish as a function. > > Yann? > Excuse me for the lack of comment. Problem not in 'setjmp' - on mingw '__longjmp' is not present and, consequently, is not defined HAVE__JMP. If I am right, of course... :) -- WBR, Yaroslav Kavenchuk. |
From: Yaroslav K. <kav...@je...> - 2008-05-27 07:55:19
|
I wrote: > Excuse me for the lack of comment. > Problem not in 'setjmp' - on mingw '__longjmp' is not present and, > consequently, is not defined HAVE__JMP. > From <setjmp.h>: _CRTIMP void __cdecl __MINGW_NOTHROW longjmp (jmp_buf, int) __MINGW_ATTRIB_NORETURN; not '_longjmp' -- WBR, Yaroslav Kavenchuk. |
From: Sam S. <sd...@gn...> - 2008-05-27 13:55:10
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Yaroslav Kavenchuk wrote: | I wrote: |> Excuse me for the lack of comment. |> Problem not in 'setjmp' - on mingw '__longjmp' is not present and, |> consequently, is not defined HAVE__JMP. |> | | From <setjmp.h>: | | _CRTIMP void __cdecl __MINGW_NOTHROW longjmp (jmp_buf, int) | __MINGW_ATTRIB_NORETURN; | | | not '_longjmp' | when HAVE__JMP is not defined, we do not #define setjmp and longjmp to _setjmp and _longjmp, respectively, and use the system-provided setjmp & longjmp as is. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIPBKvPp1Qsf2qnMcRAs8oAJsHc/KTpQLHR+0boFoRmwI5nAkVoQCdHD9T +2xG8ZVloFlNKLQ8XT9kEuU= =aZTa -----END PGP SIGNATURE----- |
From: Yaroslav K. <kav...@tu...> - 2008-05-31 09:25:22
Attachments:
lispbibl.patch
|
Sam Steingold wrote: > when HAVE__JMP is not defined, we do not #define setjmp and longjmp to > _setjmp and _longjmp, respectively, and use the system-provided setjmp & > longjmp as is. We must redefine setjmp but not redefine longjmp. Included patch does it. -- WBR, Yaroslav Kavenchuk. |
From: Sam S. <sd...@gn...> - 2008-06-01 02:54:55
|
> * Yaroslav Kavenchuk <xnirapuhx@ghg.ol> [2008-05-31 12:25:07 +0300]: > > Sam Steingold wrote: >> when HAVE__JMP is not defined, we do not #define setjmp and longjmp to >> _setjmp and _longjmp, respectively, and use the system-provided setjmp & >> longjmp as is. > > We must redefine setjmp but not redefine longjmp. Included patch does it. > > -- > WBR, Yaroslav Kavenchuk. > > --- src/lispbibl.d.orig 2008-05-26 22:22:01 +0300 > +++ src/lispbibl.d 2008-05-31 11:49:03 +0300 > @@ -1377,6 +1377,10 @@ > > /* non-local exits */ > #include <setjmp.h> > +#if defined(__MINGW32__) && !defined(HAVE__JMP) > + #undef setjmp > + #define setjmp _setjmp > +#endif > #if (defined(UNIX) || defined(__MINGW32__)) && defined(HAVE__JMP) > /* The "_" routines are more efficient (do not save/restore signal masks, > see http://article.gmane.org/gmane.lisp.clisp.devel/18227 or why? I think we should be using _matching_ versions - i.e., either setjmp & longjmp or _setjmp & _longjmp. -- Sam Steingold (http://sds.podval.org/) on Fedora release 8 (Werewolf) http://memri.org http://mideasttruth.com http://dhimmi.com http://honestreporting.com http://ffii.org http://truepeace.org Save the whales, feed the hungry, free the mallocs. |
From: Yaroslav K. <kav...@tu...> - 2008-06-01 09:06:40
|
Sam Steingold wrote: > why? > I think we should be using _matching_ versions - i.e., either setjmp & > longjmp or _setjmp & _longjmp. I already wrote about it: on mingw in <setjmp.h> setjmp defined as > _CRTIMP int __cdecl __MINGW_NOTHROW _setjmp (jmp_buf); > #define setjmp(x) _setjmp(x) and need to redefine it, but longjmp define as > _CRTIMP void __cdecl __MINGW_NOTHROW longjmp (jmp_buf, int) __MINGW_ATTRIB_NORETURN; and not need to redefine it. -- WBR, Yaroslav Kavenchuk. |
From: Sam S. <sd...@gn...> - 2008-06-01 13:35:53
|
> * Yaroslav Kavenchuk <xnirapuhx@ghg.ol> [2008-06-01 12:06:22 +0300]: > > Sam Steingold wrote: >> why? >> I think we should be using _matching_ versions - i.e., either setjmp & >> longjmp or _setjmp & _longjmp. > > I already wrote about it: on mingw in <setjmp.h> setjmp defined as > > > _CRTIMP int __cdecl __MINGW_NOTHROW _setjmp (jmp_buf); > > > #define setjmp(x) _setjmp(x) > > and need to redefine it, but longjmp define as it is already defined as _setjmp, why should we redefine it? the only situation where this would matter is if we were using setjmp without an argument, which we do not. -- Sam Steingold (http://sds.podval.org/) on Fedora release 8 (Werewolf) http://palestinefacts.org http://truepeace.org http://thereligionofpeace.com http://pmw.org.il http://jihadwatch.org http://mideasttruth.com If your VCR is still blinking 12:00, you don't want Linux. |
From: Yaroslav K. <kav...@tu...> - 2008-06-01 15:59:47
|
Sam Steingold wrote: > > it is already defined as _setjmp, why should we redefine it? > the only situation where this would matter is if we were using setjmp > without an argument, which we do not. > Without redefine we receive following: > In file included from ../src/eval.d:8270: > lightning.c: In function `jit_compile_': > lightning.c:3069: error: `setjmp' undeclared (first use in this function) > lightning.c:3069: error: (Each undeclared identifier is reported only once > lightning.c:3069: error: for each function it appears in.) > make: *** [eval.o] Error 1 Why - I do not know. -- WBR, Yaroslav Kavenchuk. |
From: Sam S. <sd...@gn...> - 2008-06-02 18:32:37
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Yaroslav Kavenchuk wrote: | I wrote: |> Without redefine we receive following: |> |> > In file included from ../src/eval.d:8270: |> > lightning.c: In function `jit_compile_': |> > lightning.c:3069: error: `setjmp' undeclared (first use in this function) |> > lightning.c:3069: error: (Each undeclared identifier is reported only |> once |> > lightning.c:3069: error: for each function it appears in.) |> > make: *** [eval.o] Error 1 |> | | This with old lightning.c (2.45 release, not from CVS head). | | And see http://lists.gnu.org/archive/html/lightning/2008-05/msg00015.html | This issue should be fixed now. please confirm. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIRDy9Pp1Qsf2qnMcRAleSAKCWDQNh3Byx2e6GjitLY8WdZZZd4ACgh8tR 73j+bswemjZfP2gg0pNHBX4= =MYCm -----END PGP SIGNATURE----- |
From: Yaroslav K. <kav...@tu...> - 2008-06-02 21:15:19
|
Sam Steingold wrote: > This issue should be fixed now. > please confirm. Now it's works. Many thanks! -- WBR, Yaroslav Kavenchuk. |
From: Yaroslav K. <kav...@tu...> - 2008-06-01 16:19:36
|
I wrote: > Without redefine we receive following: > > > In file included from ../src/eval.d:8270: > > lightning.c: In function `jit_compile_': > > lightning.c:3069: error: `setjmp' undeclared (first use in this function) > > lightning.c:3069: error: (Each undeclared identifier is reported only > once > > lightning.c:3069: error: for each function it appears in.) > > make: *** [eval.o] Error 1 > This with old lightning.c (2.45 release, not from CVS head). And see http://lists.gnu.org/archive/html/lightning/2008-05/msg00015.html -- WBR, Yaroslav Kavenchuk. |