Refactor VOS patches for bleadperl and perl-5.8.x
Paul Green [Thu, 15 Jan 2004 16:00:15 +0000 (11:00 -0500)]
From: "Green, Paul" <Paul.Green@stratus.com>
Message-ID: <A2A34F15EE916148BC4C4748223E67A4069FBB15@exna4.stratus.com>

p4raw-id: //depot/perl@22171

README.vos
hv.c
pp_pack.c
vos/Changes

index c758235..56a3419 100644 (file)
@@ -24,7 +24,7 @@ ftp://ftp.stratus.com/pub/vos/utility/utility.html.
 
 If you are running VOS Release 14.4.1 or later, you can obtain a
 pre-compiled, supported copy of perl by purchasing Release 2.0.1
-of the VOS GNU C++ and GNU Tools product from Stratus
+(or later) of the VOS GNU C++ and GNU Tools product from Stratus
 Technologies.
 
 =head1 BUILDING PERL FOR VOS
@@ -36,8 +36,7 @@ and the GNU C++ and GNU Tools, Release 2.0.1 or later.
 To build full perl using the supplied Configure script and
 makefiles, change to the "vos" subdirectory and type the command
 "compile_full_perl" or "start_process compile_full_perl".  This
-will configure, build, and test perl.  All of the test cases
-that are executed should pass.
+will configure, build, and test perl.
 
 =head1 INSTALLING PERL IN VOS
 
@@ -56,8 +55,6 @@ While there are currently no architecture-specific
 extensions or modules distributed with perl, the following
 directories can be used to hold such files:
 
-     >system>ported>lib>perl5>5.9.0>68k
-     >system>ported>lib>perl5>5.9.0>860
      >system>ported>lib>perl5>5.9.0>7100
      >system>ported>lib>perl5>5.9.0>8000
 
@@ -71,8 +68,6 @@ two places.  Put architecture-independent files into:
 Put site-specific architecture-dependent files into one of the
 following directories:
 
-     >system>ported>lib>perl5>site_perl>5.9.0>68k
-     >system>ported>lib>perl5>site_perl>5.9.0>860
      >system>ported>lib>perl5>site_perl>5.9.0>7100
      >system>ported>lib>perl5>site_perl>5.9.0>8000
 
@@ -124,13 +119,20 @@ yet fixed.
 
 =head1 TEST STATUS
 
-When Perl 5.8.1 is built using the native build process on VOS
-Release 14.5.0 and GNU C++/GNU Tools 2.0.1, all but five
+When Perl 5.9.0 is built using the native build process on VOS
+Release 14.7.0 and GNU C++/GNU Tools 2.0.2a, all but nine
 attempted tests either pass or result in TODO (ignored)
 failures.  The tests that fail are:
 
-ext/Time/HiRes/HiRes, tests 8, 11, 20, and 21.
-lib/Net/Ping/t/450_service, test 8.
+t/io/dup, test 2
+t/io/tell, test 28
+t/op/pack, test 0
+ext/B/t/bytecode, test 1
+ext/Devel/Peek/t/Peek, test 1
+ext/Encode/t/enc_module, test 1
+ext/IO/t/io_dup, test 2
+lib/ExtUtils/t/MM_Unix, test 94
+lib/Net/ing/t/450_service, test 8
 
 =head1 SUPPORT STATUS
 
@@ -139,10 +141,10 @@ can't guarantee I'll be able to answer them.  There are some
 excellent books available on the Perl language; consult a book
 seller.
 
-If you want a supported version of perl for VOS, purchase the VOS
-GNU C++ and GNU Tools Release 2.0.1 product from Stratus
-Technologies, along with a support contract (or from anyone else
-who will sell you support).
+If you want a supported version of perl for VOS, purchase the
+VOS GNU C++ and GNU Tools Release 2.0.1 (or later) product from
+Stratus Technologies, along with a support contract (or from
+anyone else who will sell you support).
 
 =head1 AUTHOR
 
@@ -150,6 +152,6 @@ Paul Green (Paul.Green@stratus.com)
 
 =head1 LAST UPDATE
 
-March 26, 2003
+January 15, 2004
 
 =cut
diff --git a/hv.c b/hv.c
index 158b0b6..b7415ec 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -369,7 +369,7 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
                           (lval ? HV_FETCH_LVALUE : 0), Nullsv, hash);
 }
 
-HE *
+STATIC HE *
 S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
                  int flags, int action, SV *val, register U32 hash)
 {
@@ -866,7 +866,7 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
     return hv_delete_common(hv, keysv, NULL, 0, 0, flags, hash);
 }
 
-SV *
+STATIC SV *
 S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
                   int k_flags, I32 d_flags, U32 hash)
 {
index 3e4993d..834e723 100644 (file)
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -2429,11 +2429,17 @@ S_pack_rec(pTHX_ SV *cat, register tempsym_t* symptr, register SV **beglist, SV
                       given 10**(NV_MAX_10_EXP+1) == 128 ** x solve for x:
                       x = (NV_MAX_10_EXP+1) * log (10) / log (128)
                       And with that many bytes only Inf can overflow.
+                      Some C compilers are strict about integral constant
+                      expressions so we conservatively divide by a slightly
+                      smaller integer instead of multiplying by the exact
+                      floating-point value.
                    */
 #ifdef NV_MAX_10_EXP
-                   char   buf[1 + (int)((NV_MAX_10_EXP + 1) * 0.47456)];
+/*                 char   buf[1 + (int)((NV_MAX_10_EXP + 1) * 0.47456)]; -- invalid C */
+                   char   buf[1 + (int)((NV_MAX_10_EXP + 1) / 2)]; /* valid C */
 #else
-                   char   buf[1 + (int)((308 + 1) * 0.47456)];
+/*                 char   buf[1 + (int)((308 + 1) * 0.47456)]; -- invalid C */
+                   char   buf[1 + (int)((308 + 1) / 2)]; /* valid C */
 #endif
                    char  *in = buf + sizeof(buf);
 
index 2f1efca..3426d20 100644 (file)
@@ -6,6 +6,10 @@ For 5.9.0:
      custom VOS command macros.  Henceforth, perl must be built
      using the native Configure script.
 
+For 5.8.4:
+     Updated "config.alpha.def", "config.ga.def", "build.cm" and
+     "perl.bind" to build this version of perl.
+
 For 5.8.0:
      Updated "config.alpha.def", "config.ga.def", "build.cm", and
      "install_perl.cm" to use directory naming conventions that