Change 19030 by [EMAIL PROTECTED] on 2003/03/19 15:57:49
Integrate:
[ 19020]
Minor updates of Wolfgang's pack patch
Subject: Re: pack changes and related fixes
From: Philip Newton <[EMAIL PROTECTED]>
Date: Tue, 18 Mar 2003 06:19:30 +0100
Message-ID: <[EMAIL PROTECTED]>
[ 19023]
Subject: [PATCH] poll() help for VMS
From: "Craig A. Berry" <[EMAIL PROTECTED]>
Date: Tue, 18 Mar 2003 01:10:10 -0600
Message-ID: <[EMAIL PROTECTED]>
[ 19024]
Subject: [PATCH] VMS pod install tweaks
From: "Craig A. Berry" <[EMAIL PROTECTED]>
Date: Sat, 15 Mar 2003 16:06:07 -0600
Message-ID: <[EMAIL PROTECTED]>
[ 19025]
Subject: [PATCH] [perl #9990] avoid goto &tmpsub coredump
From: Dave Mitchell <[EMAIL PROTECTED]>
Date: Tue, 18 Mar 2003 21:55:05 +0000
Message-ID: <[EMAIL PROTECTED]>
[ 19026]
Update the DB_File instructions in Tru64.
[ 19028]
Better wording as requested by Rafael, and
the module is BerkeleyDB, not BerkeleyFile.
Affected files ...
... //depot/maint-5.8/perl/README.tru64#5 integrate
... //depot/maint-5.8/perl/configure.com#8 integrate
... //depot/maint-5.8/perl/embed.fnc#21 integrate
... //depot/maint-5.8/perl/ext/IO/poll.h#2 integrate
... //depot/maint-5.8/perl/pod/perldiag.pod#18 integrate
... //depot/maint-5.8/perl/pp_ctl.c#18 integrate
... //depot/maint-5.8/perl/t/op/goto.t#3 integrate
... //depot/maint-5.8/perl/vms/descrip_mms.template#8 integrate
Differences ...
==== //depot/maint-5.8/perl/README.tru64#5 (text) ====
Index: perl/README.tru64
--- perl/README.tru64#4~18866~ Sun Mar 9 05:59:01 2003
+++ perl/README.tru64 Wed Mar 19 07:57:49 2003
@@ -71,23 +71,27 @@
has not yet been patched, you'll get a warning from Configure when
selecting long doubles.
-=head2 db-hash.t failing on Tru64
+=head2 DB_File tests failing on Tru64
-The Berkeley DB 1.85 coming with the Tru64 is unfortunately buggy.
-In general in Tru64 V4.* it seemed to be more stable, but in V5.*
-something broke (even though the DB stayed at release 1.85) and
-the DB_File extension test db-hash.t may fail by dumping core after
-the subtest 21. There really is no good cure as of Tru64 V5.1A expect
-installing a newer Berkeley DB and supplying the right directories for
--Dlocincpth=/some/include and -Dloclibpth=/some/lib when running Configure
-B<and> before running "make test" setting your LD_LIBRARY_PATH to /some/lib.
+The DB_File tests (db-btree.t, db-hash.t, db-recno.t) may fail you
+have installed a newer version of Berkeley DB into the system and the
+-I and -L compiler and linker flags introduce version conflicts with
+the DB 1.85 headers and libraries that came with the Tru64. For example,
+mixing a DB v2 library with the DB v1 headers is a bad idea. Watch
+out for Configure options -Dlocincpth and -Dloclibpth, and check your
+/usr/local/include and /usr/local/lib since they are included by default.
-You can also work around the problem by disabling the DB_File by
-specifying -Ui_db to Configure, and then using the BerkeleyFile module
-from CPAN instead of DB_File. The BerkeleyFile works with Berkeley DB
-versions 2.* or greater.
+The second option is to explicitly instruct Configure to detect the
+newer Berkeley DB installation, by supplying the right directories with
+C<-Dlocincpth=/some/include> and C<-Dloclibpth=/some/lib> B<and> before
+running "make test" setting your LD_LIBRARY_PATH to F</some/lib>.
-The Berkeley DB 4.0.14 has been tested with Tru64 V5.1A and found
+The third option is to work around the problem by disabling the
+DB_File completely when build Perl by specifying -Ui_db to Configure,
+and then using the BerkeleyDB module from CPAN instead of DB_File.
+The BerkeleyDB works with Berkeley DB versions 2.* or greater.
+
+The Berkeley DB 4.1.25 has been tested with Tru64 V5.1A and found
to work. The latest Berkeley DB can be found from F<http://www.sleepycat.com>.
=head2 64-bit Perl on Tru64
==== //depot/maint-5.8/perl/configure.com#8 (text) ====
Index: perl/configure.com
--- perl/configure.com#7~18978~ Fri Mar 14 02:52:06 2003
+++ perl/configure.com Wed Mar 19 07:57:49 2003
@@ -4050,6 +4050,29 @@
$ GOSUB inlibc
$ d_mkdtemp = tmp
$!
+$! Check for poll
+$!
+$ if i_poll .eqs. "define"
+$ then
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#include <poll.h>"
+$ WS "int main()"
+$ WS "{"
+$ WS "struct pollfd pfd;"
+$ WS "int count=poll(&pfd,1,0);"
+$ WS "exit(0);"
+$ WS "}"
+$ CS
+$ tmp = "poll"
+$ GOSUB inlibc
+$ d_poll = tmp
+$ else
+$ d_poll = "undef"
+$ endif
+$!
$! Check for setvbuf
$!
$ OS
@@ -5356,7 +5379,7 @@
$ WC "d_perl_otherlibdirs='undef'"
$ WC "d_phostname='" + d_phostname + "'"
$ WC "d_pipe='define'"
-$ WC "d_poll='undef'"
+$ WC "d_poll='" + d_poll + "'"
$ WC "d_procselfexe='undef'"
$ WC "d_pthread_atfork='undef'"
$ WC "d_pthread_yield='" + d_pthread_yield + "'"
==== //depot/maint-5.8/perl/embed.fnc#21 (text) ====
Index: perl/embed.fnc
--- perl/embed.fnc#20~19011~ Mon Mar 17 11:15:23 2003
+++ perl/embed.fnc Wed Mar 19 07:57:49 2003
@@ -15,12 +15,12 @@
: p function has a Perl_ prefix
: f function takes printf style format string, varargs
: r function never returns
-: o has no compatibility macro (#define foo Perl_foo)
-: x not exported
-: X explicitly exported
-: M may change
-: E visible to Perl core extensions
-: b binary backward compatibility; function is a macro
+: o has no compatibility macro (#define foo Perl_foo)
+: x not exported
+: X explicitly exported
+: M may change
+: E visible to Perl core extensions
+: b binary backward compatibility; function is a macro
: but has also Perl_ implementation (which is exported)
:
: Individual flags may be separated by whitespace.
@@ -965,8 +965,8 @@
Ap |void |sys_intern_init
#endif
-Ap |char * |custom_op_name|OP* op
-Ap |char * |custom_op_desc|OP* op
+Ap |char * |custom_op_name |OP* op
+Ap |char * |custom_op_desc |OP* op
Adp |void |sv_nosharing |SV *
Adp |void |sv_nolocking |SV *
@@ -1038,7 +1038,7 @@
s |void |apply_attrs_my |HV *stash|OP *target|OP *attrs|OP **imopsp
# if defined(PL_OP_SLAB_ALLOC)
s |void* |Slab_Alloc |int m|size_t sz
-s |void |Slab_Free |void *op
+s |void |Slab_Free |void *op
# endif
#endif
@@ -1082,12 +1082,12 @@
#endif
#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT)
-s |I32 |unpack_rec |tempsym_t* symptr|char *s|char *strbeg|char
*strend|char **new_s
-s |SV ** |pack_rec |SV *cat|tempsym_t* symptr|SV **beglist|SV **endlist
+s |I32 |unpack_rec |tempsym_t* symptr|char *s|char *strbeg|char
*strend|char **new_s
+s |SV ** |pack_rec |SV *cat|tempsym_t* symptr|SV **beglist|SV **endlist
s |SV* |mul128 |SV *sv|U8 m
s |I32 |measure_struct |tempsym_t* symptr
s |char * |group_end |char *pat|char *patend|char ender
-s |char * |get_num |char *ppat|I32 *
+s |char * |get_num |char *ppat|I32 *
s |bool |next_symbol |tempsym_t* symptr
s |void |doencodes |SV* sv|char* s|I32 len
s |SV* |is_an_int |char *s|STRLEN l
@@ -1244,7 +1244,7 @@
s |void |del_sv |SV *p
# endif
# if !defined(NV_PRESERVES_UV)
-s |int |sv_2iuv_non_preserve |SV *sv|I32 numtype
+s |int |sv_2iuv_non_preserve |SV *sv|I32 numtype
# endif
s |I32 |expect_number |char** pattern
#
==== //depot/maint-5.8/perl/ext/IO/poll.h#2 (text) ====
Index: perl/ext/IO/poll.h
--- perl/ext/IO/poll.h#1~17645~ Fri Jul 19 12:29:57 2002
+++ perl/ext/IO/poll.h Wed Mar 19 07:57:49 2003
@@ -20,6 +20,11 @@
#define EMULATE_POLL_WITH_SELECT
+#ifdef poll
+# undef poll
+#endif
+#define poll Perl_my_poll
+
typedef struct pollfd {
int fd;
short events;
==== //depot/maint-5.8/perl/pod/perldiag.pod#18 (text) ====
Index: perl/pod/perldiag.pod
--- perl/pod/perldiag.pod#17~19011~ Mon Mar 17 11:15:23 2003
+++ perl/pod/perldiag.pod Wed Mar 19 07:57:49 2003
@@ -64,7 +64,7 @@
=item '!' allowed only after types %s
-(F) The '!' is allowed in pack() or unpack(9 only after certain types.
+(F) The '!' is allowed in pack() or unpack() only after certain types.
See L<perlfunc/pack>.
=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
==== //depot/maint-5.8/perl/pp_ctl.c#18 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#17~18881~ Mon Mar 10 08:58:22 2003
+++ perl/pp_ctl.c Wed Mar 19 07:57:49 2003
@@ -2141,6 +2141,7 @@
}
/* First do some returnish stuff. */
+ SvREFCNT_inc(cv); /* avoid premature free during unwind */
FREETMPS;
cxix = dopoptosub(cxstack_ix);
if (cxix < 0)
@@ -2194,6 +2195,7 @@
/* Now do some callish stuff. */
SAVETMPS;
+ SAVEFREESV(cv); /* later, undo the 'avoid premature free' hack */
if (CvXSUB(cv)) {
#ifdef PERL_XSUB_OLDSTYLE
if (CvOLDSTYLE(cv)) {
==== //depot/maint-5.8/perl/t/op/goto.t#3 (xtext) ====
Index: perl/t/op/goto.t
--- perl/t/op/goto.t#2~18744~ Tue Feb 18 06:46:18 2003
+++ perl/t/op/goto.t Wed Mar 19 07:57:49 2003
@@ -2,7 +2,7 @@
# "This IS structured code. It's just randomly structured."
-print "1..27\n";
+print "1..28\n";
while ($?) {
$foo = 1;
@@ -176,6 +176,14 @@
print "not " unless $ok;
print "ok 27 - weird case of goto and for(;;) loop\n";
}
+
+# bug #9990 - don't prematurely free the CV we're &going to.
+
+sub f1 {
+ my $x;
+ goto sub { $x; print "ok 28 - don't prematurely free CV\n" }
+}
+f1();
exit;
==== //depot/maint-5.8/perl/vms/descrip_mms.template#8 (text) ====
Index: perl/vms/descrip_mms.template
--- perl/vms/descrip_mms.template#7~18790~ Thu Feb 27 22:34:27 2003
+++ perl/vms/descrip_mms.template Wed Mar 19 07:57:49 2003
@@ -365,7 +365,7 @@
pod4 = [.lib.pod]perlbot.pod [.lib.pod]perlbs2000.pod [.lib.pod]perlcall.pod
[.lib.pod]perlce.pod [.lib.pod]perlclib.pod
pod5 = [.lib.pod]perlcn.pod [.lib.pod]perlcompile.pod [.lib.pod]perlcygwin.pod
[.lib.pod]perldata.pod
pod6 = [.lib.pod]perldbmfilter.pod [.lib.pod]perldebguts.pod [.lib.pod]perldebtut.pod
[.lib.pod]perldebug.pod
-pod7 = [.lib.pod]perldelta.pod [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod
[.lib.pod]perldos.pod [.lib.pod]perldsc.pod
+pod7 = [.lib.pod]perldelta.pod [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod
[.lib.pod]perldoc.pod [.lib.pod]perldos.pod [.lib.pod]perldsc.pod
pod8 = [.lib.pod]perlebcdic.pod [.lib.pod]perlembed.pod [.lib.pod]perlepoc.pod
[.lib.pod]perlfaq.pod [.lib.pod]perlfaq1.pod
pod9 = [.lib.pod]perlfaq2.pod [.lib.pod]perlfaq3.pod [.lib.pod]perlfaq4.pod
[.lib.pod]perlfaq5.pod [.lib.pod]perlfaq6.pod
pod10 = [.lib.pod]perlfaq7.pod [.lib.pod]perlfaq8.pod [.lib.pod]perlfaq9.pod
[.lib.pod]perlfilter.pod [.lib.pod]perlfork.pod
@@ -383,7 +383,7 @@
pod22 = [.lib.pod]perlsyn.pod [.lib.pod]perlthrtut.pod [.lib.pod]perltie.pod
[.lib.pod]perltoc.pod [.lib.pod]perltodo.pod
pod23 = [.lib.pod]perltooc.pod [.lib.pod]perltoot.pod [.lib.pod]perltrap.pod
[.lib.pod]perltru64.pod [.lib.pod]perltw.pod
pod24 = [.lib.pod]perlunicode.pod [.lib.pod]perluniintro.pod [.lib.pod]perlutil.pod
[.lib.pod]perluts.pod [.lib.pod]perlvar.pod
-pod25 = [.lib.pod]perlvmesa.pod [.lib.pod]perlvos.pod [.lib.pod]perlwin32.pod
[.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod
+pod25 = [.lib.pod]perlvmesa.pod [.lib.pod]perlvms.pod [.lib.pod]perlvos.pod
[.lib.pod]perlwin32.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod
pod = $(pod0) $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) $(pod9)
$(pod10) $(pod11) $(pod12) $(pod13) $(pod14) $(pod15) $(pod16) $(pod17) $(pod18)
$(pod19) $(pod20) $(pod21) $(pod22) $(pod23) $(pod24) $(pod25)
perlpods : $(pod)
@@ -767,6 +767,10 @@
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod]
+[.lib.pod]perldoc.pod : [.pod]perldoc.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod]
+
[.lib.pod]perldos.pod : [.pod]perldos.pod
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod]
@@ -1106,6 +1110,10 @@
[.lib.pod]perlvmesa.pod : [.pod]perlvmesa.pod
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod]
+
+[.lib.pod]perlvms.pod : [.vms]perlvms.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod]
[.lib.pod]perlvos.pod : [.pod]perlvos.pod
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
End of Patch.