integrate cfgperl and vmsperl contents into mainline
Gurusamy Sarathy [Tue, 21 Mar 2000 08:56:58 +0000 (08:56 +0000)]
p4raw-id: //depot/perl@5853

1  2 
Configure
Todo
Todo-5.6
pod/perldelta.pod
t/op/taint.t

diff --cc Configure
+++ b/Configure
@@@ -20,7 -20,7 +20,7 @@@
  
  # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
  #
- # Generated on Sat Mar 18 23:12:11 EET 2000 [metaconfig 3.0 PL70]
 -# Generated on Sat Mar 11 20:26:09 EET 2000 [metaconfig 3.0 PL70]
++# Generated on Sun Mar 19 20:37:30 EET 2000 [metaconfig 3.0 PL70]
  # (with additional metaconfig patches by perlbug@perl.com)
  
  cat >/tmp/c1$$ <<EOF
        case "$d_socklen_t" in
        "$define") yyy="$yyy socklen_t"
        esac
--      yyy="$yyy $sizetype int long"
++      yyy="$yyy $sizetype int long unsigned"
        for xxx in $yyy; do
                case "$socksizetype" in
                '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
                ;;
        esac
        ;;
--*)    : no sockets, so pick relatively harmless defaults
-       socksizetype='unsigned'
 -      socksizetype='char *'
++*)    : no sockets, so pick relatively harmless default
++      socksizetype='int'
        ;;
  esac
  
diff --cc Todo
--- 1/Todo
--- 2/Todo
+++ b/Todo
@@@ -46,6 -41,6 +46,15 @@@ Would be nice to hav
            an extension (Devel::MProf?) that would return the malloc
            stats in a nice Perl datastructure (also a simple interface
            to return just the grand total would be good)
++      cross-compilation support
++          host vs target: compile in the host, get the executable to
++          the target, get the possible input files to the target,
++          execute in the target (and do not assume a UNIXish shell
++          in the target! e.g. no command redirection can be assumed),
++          get possible output files back to to host.  this needs to work
++          both during Configure and during the build.  You cannot assume
++          shared filesystems between the host and the target (you may need
++          e.g. ftp), executing the target executable may involve e.g. rsh
        a way to make << and >> to shift bitvectors instead of numbers
  
  Possible pragmas
diff --cc Todo-5.6
+++ b/Todo-5.6
@@@ -43,18 -43,9 +43,12 @@@ Namespace cleanu
      API-space:    complete the list of things that constitute public api
  
  Configure
 +    fix the vicious cyclic multidependency of cc <-> libpth <-> loclibpth
 +      libswanted <-> usethreads <-> use64bitint <-> use64bitall <->
 +      uselargefiles <-> ...  
      make configuring+building away from source directory work (VPATH et al)
-       this is related to: cross-compilation configuring
-       host vs target: compile in the host, get the executable to the target,
-       get the possible input files to the target, execute in the target,
-       get possible output files back to to host.  this needs to work
-       both during Configure and during the build.  You cannot assume
-       shared filesystems between the host and the target, executing
-       the target executable may involve e.g. rsh
 -    _r support
 -    cross-compilation configuring
++      this is related to: cross-compilation configuring (see Todo)
 +    _r support (see Todo for mode detailed description)
      POSIX 1003.1 1996 Edition support--realtime stuff:
        POSIX semaphores, message queues, shared memory, realtime clocks,
        timers, signals (the metaconfig units mostly already exist for these)
@@@ -2647,84 -2560,6 +2647,92 @@@ warning.  And in Perl 5.005, this speci
  
  =back
  
 +=head1 Known Problems
 +
 +=head2 Thread test failures
 +
 +The subtests 19 and 20 of lib/thread.t test are known to fail due to
 +fundamental problems in the 5.005 threading implementation.  These are
 +not new failures--Perl 5.005_0x has the same bugs, but didn't have these
 +tests.
 +
 +=head2 EBCDIC platforms not supported
 +
 +In earlier releases of Perl, EBCDIC environments like OS390 (also
 +known as Open Edition MVS) and VM-ESA were supported.  Due to changes
 +required by the UTF-8 (Unicode) support, the EBCDIC platforms are not
 +supported in Perl 5.6.0.
 +
++=head2 In 64-bit HP-UX the lib/io_multihomed test may hang
++
++The lib/io_multihomed test may hang in HP-UX if Perl has been
++configured to be 64-bit.  Because other 64-bit platforms do not
++hang in this test, HP-UX is suspect.  All other tests pass
++in 64-bit HP-UX.  The test attempts to create and connect to
++"multihomed" sockets (sockets which have multiple IP addresses).
++
 +=head2 NEXTSTEP 3.3 POSIX test failure
 +
 +In NEXTSTEP 3.3p2 the implementation of the strftime(3) in the
 +operating system libraries is buggy: the %j format numbers the days of
 +a month starting from zero, which, while being logical to programmers,
 +will cause the subtests 19 to 27 of the lib/posix test may fail.
 +
 +=head2 UNICOS/mk CC failures during Configure run
 +
 +In UNICOS/mk the following errors may appear during the Configure run:
 +
 +      Guessing which symbols your C compiler and preprocessor define...
 +      CC-20 cc: ERROR File = try.c, Line = 3
 +      ...
 +        bad switch yylook 79bad switch yylook 79bad switch yylook 79bad switch yylook 79#ifdef A29K
 +      ...
 +      4 errors detected in the compilation of "try.c".
 +
 +The culprit is the broken awk of UNICOS/mk.  The effect is fortunately
 +rather mild: Perl itself is not adversely affected by the error, only
 +the h2ph utility coming with Perl, and that is rather rarely needed
 +these days.
 +
 +=head2 Arrow operator and arrays
 +
 +When the left argument to the arrow operator C<< -> >> is an array, or
 +the C<scalar> operator operating on an array, the result of the
 +operation must be considered erroneous. For example:
 +
 +    @x->[2]
 +    scalar(@x)->[2]
 +
 +These expressions will get run-time errors in some future release of
 +Perl.
 +
 +=head2 Many features still experimental
 +
 +As discussed above, many features are still experimental.  Interfaces and
 +implementation of these features are subject to change, and in extreme cases,
 +even subject to removal in some future release of Perl.  These features
 +include the following:
 +
 +=over 4
 +
 +=item Threads
 +
 +=item Unicode
 +
 +=item Lvalue subroutines
 +
 +=item Weak references
 +
 +=item File globbing now implemented internally
 +
 +=item The Compiler suite
 +
 +=item The DB module
 +
 +=item The regular expression constructs C<(?{ code })> and C<(??{ code })>
 +
 +=back
 +
  =head1 BUGS
  
  If you find what you think is a bug, you might check the
diff --cc t/op/taint.t
@@@ -24,11 -24,6 +24,10 @@@ BEGIN 
        $ENV{PATH} = $ENV{PATH};
        $ENV{TERM} = $ENV{TERM} ne ''? $ENV{TERM} : 'dummy';
    }
 +  if ($Config{d_shm} || $Config{d_msg}) {
 +     require IPC::SysV;
-      IPC::SysV->import(qw(IPC_PRIVATE IPC_RMID IPC_CREAT S_IRWXU
-                        S_IRWXG S_IRWXO));
++     IPC::SysV->import(qw(IPC_PRIVATE IPC_RMID IPC_CREAT S_IRWXU));
 +  }
  }
  
  my $Is_VMS = $^O eq 'VMS';
@@@ -610,74 -605,3 +609,74 @@@ else 
      $why =~ s/e/'-'.$$/ge;
      test 149,     tainted $why;
  }
 +
 +# test shmread
 +{
 +    if ($Config{d_shm}) {
 +      no strict 'subs';
 +      my $sent = "foobar";
 +      my $rcvd;
 +      my $size = 2000;
-       my $id = shmget(IPC_PRIVATE, $size, S_IRWXU|S_IRWXG|S_IRWXO) ||
++      my $id = shmget(IPC_PRIVATE, $size, S_IRWXU) ||
 +          warn "# shmget failed: $!\n";
 +      if (defined $id) {
 +          if (shmwrite($id, $sent, 0, 60)) {
 +              if (shmread($id, $rcvd, 0, 60)) {
 +                  substr($rcvd, index($rcvd, "\0")) = '';
 +              } else {
 +                  warn "# shmread failed: $!\n";
 +              }
 +          } else {
 +              warn "# shmwrite failed: $!\n";
 +          }
 +          shmctl($id, IPC_RMID, 0) || warn "# shmctl failed: $!\n";
 +      } else {
 +          warn "# shmget failed: $!\n";
 +      }
 +
 +      if ($rcvd eq $sent) {
 +          test 150, tainted $rcvd;
 +      } else {
 +          print "ok 150 # Skipped: SysV shared memory operation failed\n";
 +      }
 +    } else {
 +      print "ok 150 # Skipped: SysV shared memory is not available\n";
 +    }
 +}
 +
 +# test msgrcv
 +{
 +    if ($Config{d_msg}) {
 +      no strict 'subs';
 +      my $id = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
 +
 +      my $sent      = "message";
 +      my $type_sent = 1234;
 +      my $rcvd;
 +      my $type_rcvd;
 +
 +      if (defined $id) {
 +          if (msgsnd($id, pack("l! a*", $type_sent, $sent), 0)) {
 +              if (msgrcv($id, $rcvd, 60, 0, 0)) {
 +                  ($type_rcvd, $rcvd) = unpack("l! a*", $rcvd);
 +              } else {
 +                  warn "# msgrcv failed\n";
 +              }
 +          } else {
 +              warn "# msgsnd failed\n";
 +          }
 +          msgctl($id, IPC_RMID, 0) || warn "# msgctl failed: $!\n";
 +      } else {
 +          warn "# msgget failed\n";
 +      }
 +
 +      if ($rcvd eq $sent && $type_sent == $type_rcvd) {
 +          test 151, tainted $rcvd;
 +      } else {
 +          print "ok 151 # Skipped: SysV message queue operation failed\n";
 +      }
 +    } else {
 +      print "ok 151 # Skipped: SysV message queues are not available\n";
 +    }
 +}
 +