summaryrefslogtreecommitdiff
path: root/vms/gen_shrfls.pl
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-12-23 12:58:58 +1200
committerChip Salzenberg <chip@atlantic.net>1996-12-23 12:58:58 +1200
commit71be2cbc73608e37e1a2ab7e459a02111137d1b0 (patch)
tree86679f00907a9abdfd1ff5104cec60d9a9fb0ef9 /vms/gen_shrfls.pl
parentb133f4ec823b00faf9bd083e0eb8e7a53ba7bfca (diff)
downloadperl-71be2cbc73608e37e1a2ab7e459a02111137d1b0.tar.gz
[inseparable changes from patch from perl5.003_13 to perl5.003_14]
CORE LANGUAGE CHANGES Subject: Eliminate support for {if,unless,while,until} BLOCK BLOCK From: Chip Salzenberg <chip@atlantic.net> Files: perly.c perly.c.diff perly.y toke.c Subject: Taint $x after $x =~ s/pat/xyz/ if pat or xyz is tainted by locale From: Chip Salzenberg <chip@atlantic.net> Files: cop.h mg.c pp_ctl.c pp_hot.c Subject: Complete support for modifying undefined array members in foreach From: Chip Salzenberg <chip@atlantic.net> Files: global.sym mg.c perl.h pp.c pp_hot.c proto.h sv.c DOCUMENTATION Subject: Update pod/Makefile; s/perli18n/perllocale/ From: Chip Salzenberg <chip@atlantic.net> Files: ext/POSIX/POSIX.pod lib/I18N/Collate.pm pod/Makefile pod/perl.pod pod/perlmod.pod pod/perlnews.pod pod/roffitall OTHER CORE CHANGES Subject: Bug in debugger with import manipulations Date: Mon, 23 Dec 1996 05:37:48 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: pp_hot.c Finally I traced why MakeMaker runs wrongly under debugger: debugger function calling sequence was assuming that GvCV(CvGV(cv)) == cv for non-anonymous subs (ne END). MakeMaker managed to break it by *A::B = \&C::D; eval 'sub C::D {new one}'; After this CvGV(\&A::B) is *C::D, but &{*C::D} is the "new one". Patch follows (note that in this case we do not sacrifice having a subroutine name in debugger output ;-). Enjoy, p5p-msgid: <199612231037.FAA08617@monk.mps.ohio-state.edu> Subject: Import and dynamic methods Date: Mon, 23 Dec 1996 01:45:37 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: gv.c hv.c sv.c Here is the patch which corrects bad things which happens when you import subroutines and otherwise manipulate the symbol tree. I put forward the only chunk which may be controversal, since it may have a minor performance penalty. It is independent of the others, so it can be freely deleted. The manipulations which correctly propagate to method calls: a) Pruning globs: delete $B::{method} b) Undefing subroutines: undef &B::method; c) Importing: *B::method = \&mymethod; Enjoy, p5p-msgid: <199612230645.BAA08378@monk.mps.ohio-state.edu> Subject: sv_gets patch Date: Sun, 22 Dec 1996 03:24:04 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: pp_hot.c I sent this patch before as a part of pos $str = $str = /failing/g patch. Now I separate it in the case it was tainted by environment: Synopsis: $a = <FH>; does not work as expected if $a is magic (say, tied). Enjoy, p5p-msgid: <199612220824.DAA07235@monk.mps.ohio-state.edu> Subject: pos $str patch Date: Sun, 22 Dec 1996 03:31:21 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: mg.c pp_hot.c t/op/pat.t This patch was (mostly) posted already. It fixes the bug: pos $str is reset to undef if $str =~ /failing/g fails. Additionally, if fixes the hidded bit (=MGf_MINMATCH) surviving setting pos $str = ... Enjoy, p5p-msgid: <199612220831.DAA07247@monk.mps.ohio-state.edu> PORTABILITY Subject: Fix bugs in bincompat3 usage From: Chip Salzenberg <chip@atlantic.net> Files: perl.h perl_exp.SH Subject: VMS patches to 5.003_13 Date: Mon, 23 Dec 1996 01:26:47 -0500 (EST) From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU> Files: deb.c ext/POSIX/POSIX.xs gv.c lib/File/Copy.pm mg.c perl.c perl.h proto.h sv.c t/lib/filecopy.t taint.c toke.c util.c vms/Makefile vms/config.vms vms/descrip.mms vms/gen_shrfls.pl vms/genconfig.pl vms/genopt.com vms/perly_c.vms vms/perly_h.vms vms/test.com vms/vms.c vms/vms_yfix.pl private-msgid: <01IDBYYFYPIS002ASE@hmivax.humgen.upenn.edu> UTILITIES, LIBRARY, AND EXTENSIONS Subject: Remove libnet From: Chip Salzenberg <chip@atlantic.net> Files: MANIFEST pod/perlmod.pod Subject: Update IO->VERSION() to 1.1201 for CPAN's sake From: Chip Salzenberg <chip@atlantic.net> Files: ext/IO/lib/IO/Handle.pm lib/IO/Handle.pm Subject: Remodel File::Copy. From: Chip Salzenberg <chip@atlantic.net> Files: lib/File/Copy.pm
Diffstat (limited to 'vms/gen_shrfls.pl')
-rw-r--r--vms/gen_shrfls.pl63
1 files changed, 41 insertions, 22 deletions
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index 87b493fdd0..48092ba360 100644
--- a/vms/gen_shrfls.pl
+++ b/vms/gen_shrfls.pl
@@ -34,12 +34,13 @@
# (i.e. /Define=DEBUGGING,EMBED,MULTIPLICITY)?
#
# Author: Charles Bailey bailey@genetics.upenn.edu
-# Revised: 3-Dec-1996
require 5.000;
$debug = $ENV{'GEN_SHRFLS_DEBUG'};
+print "gen_shrfls.pl Rev. 14-Dec-1996\n" if $debug;
+
if ($ARGV[0] eq '-f') {
open(INP,$ARGV[1]) or die "Can't read input file $ARGV[1]: $!\n";
print "Input taken from file $ARGV[1]\n" if $debug;
@@ -78,7 +79,9 @@ if ($docc) {
$isvaxc = 0;
$isgcc = `$cc_cmd _nla0:/Version` =~ /GNU/
or 0; # make debug output nice
- $isvaxc = (!$isgcc && $isvax && `$cc_cmd /prefix=all _nla0:` =~ /IVQUAL/)
+ $isvaxc = (!$isgcc && $isvax &&
+ # Check exit status too, in case message is shut off
+ (`$cc_cmd /prefix=all _nla0:` =~ /IVQUAL/ || $? == 0x38240))
or 0; # again, make debug output nice
print "\$isgcc: $isgcc\n" if $debug;
print "\$isvaxc: $isvaxc\n" if $debug;
@@ -139,6 +142,7 @@ sub scan_enum {
sub scan_var {
my($line) = @_;
+ my($const) = $line =~ /^EXTCONST/;
print "\tchecking for global variable\n" if $debug > 1;
$line =~ s/INIT\(.*\)//;
@@ -147,8 +151,21 @@ sub scan_var {
$line =~ s/\W*;?\s*$//;
print "\tfiltered to \\$line\\\n" if $debug > 1;
if ($line =~ /(\w+)$/) {
- print "\tvar name is \\$1\\\n" if $debug > 1;
- $vars{$1}++;
+ print "\tvar name is \\$1\\" . ($const ? ' (const)' : '') . "\n" if $debug > 1;
+ if ($const) { $cvars{$1}++; }
+ else { $vars{$1}++; }
+ }
+ if ($isvaxc) {
+ my($type) = $line =~ /^EXT\w*\s+(\w+)/;
+ print "\tchecking for use of enum (type is \"$type\")\n" if $debug > 2;
+ if ($type eq 'expectation') {
+ $used_expectation_enum++;
+ print "\tsaw global use of enum \"expectation\"\n" if $debug > 1;
+ }
+ if ($type eq 'opcode') {
+ $used_opcode_enum++;
+ print "\tsaw global use of enum \"opcode\"\n" if $debug > 1;
+ }
}
}
@@ -203,20 +220,8 @@ LINE: while (<CPP>) {
else { &scan_func($_); }
last LINE unless $_ = <CPP>;
}
- print $_ if $debug > 3;
- if (($type) = /^EXT\s+(\w+)/) {
- if ($isvaxc) {
- if ($type eq 'expectation') {
- $used_expectation_enum++;
- print "\tsaw global use of enum \"expectation\"\n" if $debug > 1;
- }
- if ($type eq 'opcode') {
- $used_opcode_enum++;
- print "\tsaw global use of enum \"opcode\"\n" if $debug > 1;
- }
- }
- &scan_var($_);
- }
+ print $_ if $debug > 3 && ($debug > 5 || length($_));
+ if (/^EXT/) { &scan_var($_); }
}
close CPP;
@@ -277,7 +282,11 @@ if ($isvax) {
or die "$0: Can't write to ${dir}perlshr_gbl${marord}.mar: $!\n";
print MAR "\t.title perlshr_gbl$marord\n";
}
-foreach $var (sort keys %vars) {
+unless ($isgcc) {
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RO_VARS,PIC,NOEXE,RD,NOWRT,SHR\n";
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RW_VARS,PIC,NOEXE,RD,WRT,NOSHR\n";
+}
+foreach $var (sort (keys %vars,keys %cvars)) {
if ($isvax) { print OPTBLD "UNIVERSAL=$var\n"; }
else { print OPTBLD "SYMBOL_VECTOR=($var=DATA)\n"; }
# This hack brought to you by the lack of a globaldef in gcc.
@@ -312,9 +321,19 @@ if ($isvax) {
open(OPTATTR,">${dir}perlshr_attr.opt")
or die "$0: Can't write to ${dir}perlshr_attr.opt: $!\n";
-print OPTATTR "PSECT_ATTR=\$CHAR_STRING_CONSTANTS,PIC,SHR,NOEXE,RD,NOWRT\n";
-foreach $var (sort keys %vars) {
- print OPTATTR "PSECT_ATTR=${var},PIC,OVR,RD,NOEXE,WRT,NOSHR\n";
+if ($isvaxc) {
+ print OPTATTR "PSECT_ATTR=\$CHAR_STRING_CONSTANTS,PIC,SHR,NOEXE,RD,NOWRT\n";
+}
+elsif ($isgcc) {
+ foreach $var (sort keys %cvars) {
+ print OPTATTR "PSECT_ATTR=${var},PIC,OVR,RD,NOEXE,NOWRT,SHR\n";
+ }
+ foreach $var (sort keys %vars) {
+ print OPTATTR "PSECT_ATTR=${var},PIC,OVR,RD,NOEXE,WRT,NOSHR\n";
+ }
+}
+else {
+ print OPTATTR "! No additional linker directives are needed when using DECC\n";
}
close OPTATTR;