This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add SA_SIGINFO 'code' constants to POSIX
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Fri, 15 Jan 2016 14:45:01 +0000 (14:45 +0000)
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Tue, 26 Jan 2016 10:51:42 +0000 (10:51 +0000)
Mention them in the sigaction documentation, and document the 'addr'
field.

ext/POSIX/Makefile.PL
ext/POSIX/lib/POSIX.pm
ext/POSIX/lib/POSIX.pod
ext/POSIX/t/export.t
pod/perldelta.pod

index 5a24a34..fabbe8a 100644 (file)
@@ -128,6 +128,18 @@ push @names, {name=>$_, type=>"IV", default=>["IV", "0"]}
               _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
               _POSIX_STREAM_MAX _POSIX_TZNAME_MAX _POSIX_VDISABLE _POSIX_VERSION
              ));
+push @names, {name=>$_, type =>"IV"},
+  foreach (qw(ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG
+              ILL_COPROC ILL_BADSTK
+              FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND
+              FPE_FLTRES FPE_FLTINV FPE_FLTSUB
+              SEGV_MAPERR SEGV_ACCERR
+              BUS_ADRALN BUS_ADRERR BUS_OBJERR
+              TRAP_BRKPT TRAP_TRACE
+              CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED
+              POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP
+              SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ
+             ));
 
 if ($rt_signals) {
     push @names, {name=>"SIGRTMAX", not_constant=>1},
index d808207..8e5d4ac 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 
 our ($AUTOLOAD, %SIGRT);
 
-our $VERSION = '1.59';
+our $VERSION = '1.60';
 
 require XSLoader;
 
@@ -405,6 +405,19 @@ my %other_export_tags = (
     stdlib_h_c99 => [ @{$default_export_tags{stdlib_h}}, 'strtold' ],
 
     nan_payload => [ qw(getpayload setpayload setpayloadsig issignaling) ],
+
+    signal_h_si_code => [qw(
+        ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG
+        ILL_COPROC ILL_BADSTK
+        FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND
+        FPE_FLTRES FPE_FLTINV FPE_FLTSUB
+        SEGV_MAPERR SEGV_ACCERR
+        BUS_ADRALN BUS_ADRERR BUS_OBJERR
+        TRAP_BRKPT TRAP_TRACE
+        CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED
+        POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP
+        SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ
+  )],
 );
 
 {
index 90e4f88..b6737f0 100644 (file)
@@ -1641,6 +1641,9 @@ semantics, as defined by POSIX/SUSv3:
                 a user process and the uid and pid make sense,
                 otherwise the signal was sent by the kernel
 
+The constants for specific C<code> values can be imported individually
+or using the C<:signal_h_si_code> tag.
+
 The following are also defined by POSIX/SUSv3, but unfortunately
 not very widely implemented:
 
@@ -1648,6 +1651,8 @@ not very widely implemented:
     uid         the uid of the process id generating the signal
     status      exit value or signal for SIGCHLD
     band        band event for SIGPOLL
+    addr        address of faulting instruction or memory reference
+                for SIGILL, SIGFPE, SIGSEGV or SIGBUS
 
 A third argument is also passed to the handler, which contains a copy
 of the raw binary contents of the C<siginfo> structure: if a system has
@@ -2656,6 +2661,12 @@ C<SA_SIGINFO> C<SIGABRT> C<SIGALRM> C<SIGCHLD> C<SIGCONT> C<SIGFPE> C<SIGHUP> C<
 C<SIGKILL> C<SIGPIPE> C<SIGQUIT> C<SIGSEGV> C<SIGSTOP> C<SIGTERM> C<SIGTSTP> C<SIGTTIN> C<SIGTTOU>
 C<SIGUSR1> C<SIGUSR2> C<SIG_BLOCK> C<SIG_DFL> C<SIG_ERR> C<SIG_IGN> C<SIG_SETMASK>
 C<SIG_UNBLOCK>
+C<ILL_ILLOPC> C<ILL_ILLOPN> C<ILL_ILLADR> C<ILL_ILLTRP> C<ILL_PRVOPC> C<ILL_PRVREG> C<ILL_COPROC>
+C<ILL_BADSTK> C<FPE_INTDIV> C<FPE_INTOVF> C<FPE_FLTDIV> C<FPE_FLTOVF> C<FPE_FLTUND> C<FPE_FLTRES>
+C<FPE_FLTINV> C<FPE_FLTSUB> C<SEGV_MAPERR> C<SEGV_ACCERR> C<BUS_ADRALN> C<BUS_ADRERR>
+C<BUS_OBJERR> C<TRAP_BRKPT> C<TRAP_TRACE> C<CLD_EXITED> C<CLD_KILLED> C<CLD_DUMPED> C<CLD_TRAPPED>
+C<CLD_STOPPED> C<CLD_CONTINUED> C<POLL_IN> C<POLL_OUT> C<POLL_MSG> C<POLL_ERR> C<POLL_PRI>
+C<POLL_HUP> C<SI_USER> C<SI_QUEUE> C<SI_TIMER> C<SI_ASYNCIO> C<SI_MESGQ>
 
 =back
 
index 553a8a9..4ef920e 100644 (file)
@@ -141,6 +141,16 @@ my %expect = (
         # this stuff was added in 5.23
         qw(
             getpayload issignaling setpayload setpayloadsig
+            ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG
+            ILL_COPROC ILL_BADSTK
+            FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND
+            FPE_FLTRES FPE_FLTINV FPE_FLTSUB
+            SEGV_MAPERR SEGV_ACCERR
+            BUS_ADRALN BUS_ADRERR BUS_OBJERR
+            TRAP_BRKPT TRAP_TRACE
+            CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED
+            POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP
+            SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ
         ),
     ],
 );
index 6d44914..4d09b82 100644 (file)
@@ -121,6 +121,13 @@ XXX
 
 L<XXX> has been upgraded from version A.xx to B.yy.
 
+=item *
+
+L<POSIX> has been upgraded from version 1.59 to 1.60.
+
+It can now export constants for the C<code> value in the hash passed to the
+L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
+
 =back
 
 =head2 Removed Modules and Pragmata