# $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
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
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)
=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
$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';
$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";
+ }
+}
+