diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1996-12-23 12:58:58 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1996-12-23 12:58:58 +1200 |
commit | 71be2cbc73608e37e1a2ab7e459a02111137d1b0 (patch) | |
tree | 86679f00907a9abdfd1ff5104cec60d9a9fb0ef9 /vms/gen_shrfls.pl | |
parent | b133f4ec823b00faf9bd083e0eb8e7a53ba7bfca (diff) | |
download | perl-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.pl | 63 |
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; |