This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #45513] Test failures on amd64-freebsd 6.2
authorSlaven Rezic <slaven@rezic.de>
Sat, 29 Sep 2007 05:38:08 +0000 (22:38 -0700)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Wed, 3 Oct 2007 10:59:55 +0000 (10:59 +0000)
From: "slaven@rezic.de via RT" <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-5916-1191069483-1553.45513-15-0@perl.org>

p4raw-id: //depot/perl@32012

embed.fnc
embed.h
mg.c
proto.h

index c12ca2a..03fffa4 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -795,8 +795,8 @@ p   |I32    |setenv_getix   |NN const char* nam
 EXp    |void   |setdefout      |NULLOK GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|I32 len|U32 hash
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-np     |Signal_t |sighandler   |int sig|...
-Anp    |Signal_t |csighandler  |int sig|...
+np     |Signal_t |sighandler   |int sig|NULLOK siginfo_t *info|NULLOK void *uap
+Anp    |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
 #else
 np     |Signal_t |sighandler   |int sig
 Anp    |Signal_t |csighandler  |int sig
diff --git a/embed.h b/embed.h
index 1b6d88e..e97d5db 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define share_hek(a,b,c)       Perl_share_hek(aTHX_ a,b,c)
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
 #ifdef PERL_CORE
+#define sighandler             Perl_sighandler
 #endif
+#define csighandler            Perl_csighandler
 #else
 #ifdef PERL_CORE
 #define sighandler             Perl_sighandler
diff --git a/mg.c b/mg.c
index 128f2a2..e97b8dd 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -56,7 +56,7 @@ tie.
 #endif
 
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-Signal_t Perl_csighandler(int sig, ...);
+Signal_t Perl_csighandler(int sig, siginfo_t *, void *);
 #else
 Signal_t Perl_csighandler(int sig);
 #endif
@@ -1307,7 +1307,7 @@ S_raise_signal(pTHX_ int sig)
 
 Signal_t
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-Perl_csighandler(int sig, ...)
+Perl_csighandler(int sig, siginfo_t *sip PERL_UNUSED_DECL, void *uap PERL_UNUSED_DECL)
 #else
 Perl_csighandler(int sig)
 #endif
@@ -1318,7 +1318,6 @@ Perl_csighandler(int sig)
     dTHX;
 #endif
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-   va_list args;
 #endif
 #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
     (void) rsignal(sig, PL_csighandlerp);
@@ -1333,7 +1332,6 @@ Perl_csighandler(int sig)
 #endif
 #endif
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-   va_start(args, sig);
 #endif
    if (
 #ifdef SIGILL
@@ -1352,7 +1350,6 @@ Perl_csighandler(int sig)
    else
        S_raise_signal(aTHX_ sig);
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-   va_end(args);
 #endif
 }
 
@@ -2778,7 +2775,7 @@ Perl_whichsig(pTHX_ const char *sig)
 
 Signal_t
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-Perl_sighandler(int sig, ...)
+Perl_sighandler(int sig, siginfo_t *sip, void *uap PERL_UNUSED_DECL)
 #else
 Perl_sighandler(int sig)
 #endif
@@ -2856,11 +2853,6 @@ Perl_sighandler(int sig)
         struct sigaction oact;
 
         if (sigaction(sig, 0, &oact) == 0 && oact.sa_flags & SA_SIGINFO) {
-             siginfo_t *sip;
-             va_list args;
-
-             va_start(args, sig);
-             sip = (siginfo_t*)va_arg(args, siginfo_t*);
              if (sip) {
                   HV *sih = newHV();
                   SV *rv  = newRV_noinc((SV*)sih);
@@ -2881,7 +2873,6 @@ Perl_sighandler(int sig)
                   PUSHs(newSVpv((char *)sip, sizeof(*sip)));
              }
 
-              va_end(args);
         }
     }
 #endif
diff --git a/proto.h b/proto.h
index 8586650..28cfdef 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2137,8 +2137,8 @@ PERL_CALLCONV HEK*        Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash)
                        __attribute__nonnull__(pTHX_1);
 
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-PERL_CALLCONV Signal_t Perl_sighandler(int sig, ...);
-PERL_CALLCONV Signal_t Perl_csighandler(int sig, ...);
+PERL_CALLCONV Signal_t Perl_sighandler(int sig, siginfo_t *info, void *uap);
+PERL_CALLCONV Signal_t Perl_csighandler(int sig, siginfo_t *info, void *uap);
 #else
 PERL_CALLCONV Signal_t Perl_sighandler(int sig);
 PERL_CALLCONV Signal_t Perl_csighandler(int sig);