m4-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

stackovf: use sigaction


From: Eric Blake
Subject: stackovf: use sigaction
Date: Sat, 21 Jun 2008 16:31:21 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've finished writing a sigaction gnulib module that allows the blind use
of sigaction even on mingw.  As such, I can check this in on the stackovf
branch:

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkhdgTkACgkQ84KuGfSFAYCy8QCfW1cmuImUUE8A+SmuuWsOt47A
5jkAn2j0Sf+t6MqQDsH5DHFOmXZyR4NA
=HJ39
-----END PGP SIGNATURE-----
>From bb09ca5a7f38312fe279bd0e67d0c41dc65b8ba0 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Sat, 21 Jun 2008 15:00:14 -0600
Subject: [PATCH] Use new sigaction module.

* m4/gnulib-cache.m4: Import sigaction module.
* src/m4.c (main): Drop signal() calls.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog          |    6 ++++++
 m4/gnulib-cache.m4 |    4 ++--
 src/m4.c           |   30 ++++++++++--------------------
 3 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9913112..d9f0d10 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-21  Eric Blake  <address@hidden>
+
+       Use new sigaction module.
+       * m4/gnulib-cache.m4: Import sigaction module.
+       * src/m4.c (main): Drop signal() calls.
+
 2008-06-18  Eric Blake  <address@hidden>
 
        Also trap SIGILL, SIGFPE, SIGBUS.
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
index 7f8d10b..b725169 100644
--- a/m4/gnulib-cache.m4
+++ b/m4/gnulib-cache.m4
@@ -15,11 +15,11 @@
 
 
 # Specification in the form of a command-line invocation:
-#   gnulib-tool --import --dir=. --local-dir=local --lib=libm4 
--source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --with-tests 
--no-libtool --macro-prefix=M4 announce-gen assert autobuild avltree-oset 
binary-io c-stack clean-temp cloexec close-stream closein config-h error fdl 
fflush flexmember fopen-safer fseeko gendocs getopt git-version-gen gnumakefile 
gnupload gpl-3.0 intprops memchr2 memmem mkstemp obstack progname quote regex 
stdbool stdint stdlib-safer strsignal strtod strtol unlocked-io 
vasnprintf-posix verror version-etc version-etc-fsf xalloc xmemdup0 xprintf 
xvasprintf-posix
+#   gnulib-tool --import --dir=. --local-dir=local --lib=libm4 
--source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --with-tests 
--no-libtool --macro-prefix=M4 announce-gen assert autobuild avltree-oset 
binary-io c-stack clean-temp cloexec close-stream closein config-h error fdl 
fflush flexmember fopen-safer fseeko gendocs getopt git-version-gen gnumakefile 
gnupload gpl-3.0 intprops memchr2 memmem mkstemp obstack progname quote regex 
sigaction stdbool stdint stdlib-safer strsignal strtod strtol unlocked-io 
vasnprintf-posix verror version-etc version-etc-fsf xalloc xmemdup0 xprintf 
xvasprintf-posix
 
 # Specification in the form of a few gnulib-tool.m4 macro invocations:
 gl_LOCAL_DIR([local])
-gl_MODULES([announce-gen assert autobuild avltree-oset binary-io c-stack 
clean-temp cloexec close-stream closein config-h error fdl fflush flexmember 
fopen-safer fseeko gendocs getopt git-version-gen gnumakefile gnupload gpl-3.0 
intprops memchr2 memmem mkstemp obstack progname quote regex stdbool stdint 
stdlib-safer strsignal strtod strtol unlocked-io vasnprintf-posix verror 
version-etc version-etc-fsf xalloc xmemdup0 xprintf xvasprintf-posix])
+gl_MODULES([announce-gen assert autobuild avltree-oset binary-io c-stack 
clean-temp cloexec close-stream closein config-h error fdl fflush flexmember 
fopen-safer fseeko gendocs getopt git-version-gen gnumakefile gnupload gpl-3.0 
intprops memchr2 memmem mkstemp obstack progname quote regex sigaction stdbool 
stdint stdlib-safer strsignal strtod strtol unlocked-io vasnprintf-posix verror 
version-etc version-etc-fsf xalloc xmemdup0 xprintf xvasprintf-posix])
 gl_AVOID([])
 gl_SOURCE_BASE([lib])
 gl_M4_BASE([m4])
diff --git a/src/m4.c b/src/m4.c
index a6665ff..970aa8b 100644
--- a/src/m4.c
+++ b/src/m4.c
@@ -431,6 +431,7 @@ FILE *trace_file;
 int
 main (int argc, char *const *argv, char *const *envp)
 {
+  struct sigaction act;
   macro_definition *head;      /* head of deferred argument list */
   macro_definition *tail;
   macro_definition *defn;
@@ -477,28 +478,17 @@ main (int argc, char *const *argv, char *const *envp)
   signal_message[SIGFPE] = xstrdup (strsignal (SIGFPE));
   if (SIGBUS != SIGILL)
     signal_message[SIGBUS] = xstrdup (strsignal (SIGBUS));
-#ifdef HAVE_SIGACTION
-  {
-    struct sigaction act;
-    sigemptyset (&act.sa_mask);
-    /* One-shot - if we fault while handling a fault, we want to
-       revert to default signal behavior.  */
-    act.sa_flags = SA_NODEFER | SA_RESETHAND;
-    act.sa_handler = fault_handler;
-    sigaction (SIGABRT, &act, NULL);
-    sigaction (SIGILL, &act, NULL);
-    sigaction (SIGFPE, &act, NULL);
-    sigaction (SIGBUS, &act, NULL);
-  }
-#else /* !HAVE_SIGACTION */
-  signal (SIGABRT, fault_handler);
-  signal (SIGILL, fault_handler);
-  signal (SIGFPE, fault_handler);
-  signal (SIGBUS, fault_handler);
-#endif /* !HAVE_SIGACTION */
+  sigemptyset (&act.sa_mask);
+  /* One-shot - if we fault while handling a fault, we want to revert
+     to default signal behavior.  */
+  act.sa_flags = SA_NODEFER | SA_RESETHAND;
+  act.sa_handler = fault_handler;
+  sigaction (SIGABRT, &act, NULL);
+  sigaction (SIGILL, &act, NULL);
+  sigaction (SIGFPE, &act, NULL);
+  sigaction (SIGBUS, &act, NULL);
 
   /* First, we decode the arguments, to size up tables and stuff.  */
-
   head = tail = NULL;
 
   while ((optchar = getopt_long (argc, (char **) argv, OPTSTRING,
-- 
1.5.6


reply via email to

[Prev in Thread] Current Thread [Next in Thread]