Exclude signal-related symbols on VMS without home-grown signalling.
authorCraig A. Berry <craigberry@mac.com>
Sat, 20 Oct 2012 22:27:01 +0000 (17:27 -0500)
committerCraig A. Berry <craigberry@mac.com>
Sat, 20 Oct 2012 22:27:01 +0000 (17:27 -0500)
config.h defines KILL_BY_SIGPRC when we are using our own signal
handling functions based on the sys$sigprc system service.  But
when *not* doing that, and since using makedef.pl to define our
exportable symbols, we have not properly excluded the symbols
involved in the home-grown implementation.  It's not a common
configuration, but since it's configurable, it should work, and
now it will.

makedef.pl

index 0923f40..9550042 100644 (file)
@@ -105,6 +105,7 @@ open(CFG, '<', 'config.h') || die "Cannot open config.h: $!\n";
 while (<CFG>) {
     $define{$1} = 1 if /^\s*\#\s*define\s+(MYMALLOC|MULTIPLICITY
                                            |SPRINTF_RETURNS_STRLEN
+                                           |KILL_BY_SIGPRC
                                            |(?:PERL|USE|HAS)_\w+)\b/x;
 }
 close(CFG);
@@ -471,9 +472,19 @@ if ($define{HAS_SIGACTION}) {
     if ($ARGS{PLATFORM} eq 'vms') {
         # FAKE_PERSISTENT_SIGNAL_HANDLERS defined as !defined(HAS_SIGACTION)
         ++$skip{PL_sig_ignoring};
+        ++$skip{PL_sig_handlers_initted} unless $define{KILL_BY_SIGPRC};
     }
 }
 
+if ($ARGS{PLATFORM} eq 'vms' && !$define{KILL_BY_SIGPRC}) {
+    # FAKE_DEFAULT_SIGNAL_HANDLERS defined as KILL_BY_SIGPRC
+    ++$skip{Perl_csighandler_init};
+    ++$skip{Perl_my_kill};
+    ++$skip{Perl_sig_to_vmscondition};
+    ++$skip{PL_sig_defaulting};
+    ++$skip{PL_sig_handlers_initted} unless !$define{HAS_SIGACTION};
+}
+
 unless ($define{USE_LOCALE_COLLATE}) {
     ++$skip{$_} foreach qw(
                    PL_collation_ix