From 2a97f34e6730d618a03b52d05f0ee03de9251b03 Mon Sep 17 00:00:00 2001
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date: Wed, 15 Aug 2007 08:19:32 +0000
Subject: [PATCH] natPosixProcess.cc (sigchld_handler): Remove 'si' and 'third'
 parameters.

2007-08-15  Samuel Thibault  <samuel.thibault@ens-lyon.org>

        * java/lang/natPosixProcess.cc (sigchld_handler) [!SA_SIGINFO]: Remove
        'si' and 'third' parameters.  Disable calling
        pmi->old_sigaction.sa_sigaction.
        (java::lang::PosixProcess*ProcessManager::init) [!SA_SIGINFO]: Set
        sa.sa_handler instead of sa.sa_sigaction, don't set SA_SIGINFO flag.

From-SVN: r127507
---
 libjava/ChangeLog                    |  8 ++++++++
 libjava/java/lang/natPosixProcess.cc | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index fd7ddcdf93f8..22d1b502d518 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2007-08-15  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* java/lang/natPosixProcess.cc (sigchld_handler) [!SA_SIGINFO]: Remove
+	'si' and 'third' parameters.  Disable calling
+	pmi->old_sigaction.sa_sigaction.
+	(java::lang::PosixProcess*ProcessManager::init) [!SA_SIGINFO]: Set
+	sa.sa_handler instead of sa.sa_sigaction, don't set SA_SIGINFO flag.
+
 2007-08-09  Andrew Haley  <aph@redhat.com>
 
 	* testsuite/lib/libjava.exp (libjava_invoke): Log the invocation.
diff --git a/libjava/java/lang/natPosixProcess.cc b/libjava/java/lang/natPosixProcess.cc
index eadc44f84038..fbd3f6a0a1b1 100644
--- a/libjava/java/lang/natPosixProcess.cc
+++ b/libjava/java/lang/natPosixProcess.cc
@@ -110,7 +110,11 @@ namespace
 // sigwait() on SIGCHLD.  The information passed is ignored as it
 // will be recovered by the waitpid() call.
 static void
+#ifdef SA_SIGINFO
 sigchld_handler (int sig, siginfo_t *si, void *third)
+#else
+sigchld_handler (int sig)
+#endif
 {
   if (PosixProcess$ProcessManager::nativeData != NULL)
     {
@@ -121,9 +125,11 @@ sigchld_handler (int sig, siginfo_t *si, void *third)
       if (pmi->old_sigaction.sa_handler != SIG_DFL
           && pmi->old_sigaction.sa_handler != SIG_IGN)
         {
+#ifdef SA_SIGINFO
           if ((pmi->old_sigaction.sa_flags & SA_SIGINFO) != 0)
             pmi->old_sigaction.sa_sigaction(sig, si, third);
           else
+#endif
             (*pmi->old_sigaction.sa_handler)(sig);
         }
     }
@@ -156,9 +162,15 @@ java::lang::PosixProcess$ProcessManager::init ()
       struct sigaction sa;
       memset (&sa, 0, sizeof (sa));
 
+#ifdef SA_SIGINFO
       sa.sa_sigaction = sigchld_handler;
       // We only want signals when the things exit.
       sa.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
+#else
+      sa.sa_handler = sigchld_handler;
+      // We only want signals when the things exit.
+      sa.sa_flags = SA_NOCLDSTOP;
+#endif
 
       if (-1 == sigaction (SIGCHLD, &sa, &pmi->old_sigaction))
         goto error;
-- 
GitLab