* gdb.base/signull.c: Use sigsetjmp/siglongjmp instead of

setjmp/longjmp.  Use sigaction instead of signal.
This commit is contained in:
Ulrich Weigand 2004-05-20 14:58:54 +00:00
parent 20e56c33af
commit 725603e12f
2 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2004-05-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* gdb.base/signull.c: Use sigsetjmp/siglongjmp instead of
setjmp/longjmp. Use sigaction instead of signal.
2004-05-19 J. Brobecker <brobecker@gnat.com> 2004-05-19 J. Brobecker <brobecker@gnat.com>
Michael Snyder <msnyder@redhat.com> Michael Snyder <msnyder@redhat.com>

View File

@ -19,6 +19,7 @@
#include <signal.h> #include <signal.h>
#include <setjmp.h> #include <setjmp.h>
#include <stdlib.h>
enum tests { enum tests {
code_entry_point, code_descriptor, data_pointer code_entry_point, code_descriptor, data_pointer
@ -38,7 +39,7 @@ jmp_buf env;
extern void extern void
keeper (int sig) keeper (int sig)
{ {
longjmp (env, 0); siglongjmp (env, 0);
} }
extern long extern long
@ -59,10 +60,15 @@ int
main () main ()
{ {
static volatile int i; static volatile int i;
signal (SIGSEGV, keeper);
struct sigaction act;
memset (&act, 0, sizeof act);
act.sa_handler = keeper;
sigaction (SIGSEGV, &act, NULL);
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
setjmp (env); sigsetjmp (env, 1);
bowler (); bowler ();
} }
} }