Re: 5.6.*, bleadperl: bugs in pp_concat
[p5sagit/p5-mst-13.2.git] / README.hpux
index 5fbddf7..732fdec 100644 (file)
@@ -42,7 +42,7 @@ update is 2.0.
 
 The original version of PA-RISC, HP no longer sells any system with this chip.
 
-The following systems contain PA-RISC 1.0 chips:
+The following systems contained PA-RISC 1.0 chips:
 
     600, 635, 645, 808, 815, 822, 825, 832, 834, 835, 840, 842, 845, 850, 852,
     855, 860, 865, 870, 890
@@ -83,7 +83,7 @@ A complete list of models at the time the OS was built is in the file
 /opt/langtools/lib/sched.models.  The first column corresponds to the
 output of the "uname -m" command (without the leading "9000/").  The
 second column is the PA-RISC version and the third column is the exact
-chip type used.
+chip type used. (Start browsing at the bottom to prevent confusion ;-)
 
 =head2 Portability Between PA-RISC Versions
 
@@ -94,12 +94,27 @@ Perl to to also run on a PA-RISC 1.1, the compiler flags +DAportable and
 +DS32 should be used.
 
 It is no longer possible to compile PA-RISC 1.0 executables on either
-the PA-RISC 1.1 or 2.0 platforms.
+the PA-RISC 1.1 or 2.0 platforms.  The command-line flags are accepted,
+but the resulting executable will not run when transferred to a PA-RISC
+1.0 system.
+
+=head2 Itanium Processor Family
+
+HP-UX also runs on the new Itanium processor.  This requires the use
+of a different version of HP-UX (currently 11.20), and with the exception
+of a few differences detailed below and in later sections, Perl should
+compile with no problems.
+
+Although PA-RISC binaries can run on Itanium systems, you should not
+attempt to use a PA-RISC version of Perl on an Itanium system.  This is
+because shared libraries created on an Itanium system cannot be loaded
+while running a PA-RISC executable.
 
 =head2 Building Dynamic Extensions on HP-UX
 
 HP-UX supports dynamically loadable libraries (shared libraries).
-Shared libraries end with the suffix .sl.
+Shared libraries end with the suffix .sl.  On Itanium systems,
+they end with the suffix .so.
 
 Shared libraries created on a platform using a particular PA-RISC
 version are not usable on platforms using an earlier PA-RISC version by
@@ -107,6 +122,12 @@ default.  However, this backwards compatibility may be enabled using the
 same +DAportable compiler flag (with the same PA-RISC 1.0 caveat
 mentioned above).
 
+Shared libraries created on an Itanium platform cannot be loaded on
+a PA-RISC platform.  Shared libraries created on a PA-RISC platform
+can only be loaded on an Itanium platform if it is a PA-RISC executable
+that is attempting to load the PA-RISC library.  A PA-RISC shared
+library cannot be loaded into an Itanium executable nor vice-versa.
+
 To create a shared library, the following steps must be performed:
 
     1. Compile source modules with +z or +Z flag to create a .o module
@@ -124,7 +145,7 @@ If these dependent libraries are not listed at shared library creation
 time, you will get fatal "Unresolved symbol" errors at run time when the
 library is loaded.
 
-You may create a shared library that referers to another library, which
+You may create a shared library that refers to another library, which
 may be either an archive library or a shared library.  If this second
 library is a shared library, this is called a "dependent library".  The
 dependent library's name is recorded in the main shared library, but it
@@ -140,13 +161,57 @@ modules are then linked into the shared library.
 Note that it is okay to create a library which contains a dependent
 library that is already linked into perl.
 
-It is no longer possible to link PA-RISC 1.0 shared libraries.
+Some extensions, like DB_File and Compress::Zlib use/require prebuilt
+libraries for the perl extensions/modules to work. If these libraries
+are built using the default configuration, it might happen that you run
+into an error like "invalid loader fixup" during load phase. HP is aware
+of this problem and address it at
+  http://devresource.hp.com/devresource/Docs/TechTips/cxxTips.html#tip13
+
+A more general approach is to intervene manually, as with an example for
+the DB_File module, which requires SleepyCat's libdb.sl:
+
+    # cd .../db-3.2.9/build_unix
+    # vi Makefile
+    ... add +Z to all cflags to create shared objects
+    CFLAGS=         -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
+                   -I/usr/local/include -I/usr/include/X11R6
+    CXXFLAGS=       -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
+                   -I/usr/local/include -I/usr/include/X11R6
+
+    # make clean
+    # make
+    # mkdir tmp
+    # cd tmp
+    # ar x ../libdb.a
+    # ld -b -o libdb-3.2.sl *.o
+    # mv libdb-3.2.sl /usr/local/lib
+    # rm *.o
+    # cd /usr/local/lib
+    # rm -f libdb.sl
+    # ln -s libdb-3.2.sl libdb.sl
+
+    # cd .../DB_File-1.76
+    # make distclean
+    # perl Makefile.PL
+    # make
+    # make test
+    # make install
+
+It is no longer possible to link PA-RISC 1.0 shared libraries (even
+though the command-line flags are still present).
+
+PA-RISC and Itanium object files are not interchangeable.  Although
+you may be able to use ar to create an archive library of PA-RISC
+object files on an Itanium system, you cannot link against it using
+an Itanium link editor.
 
 =head2 The HP ANSI C Compiler
 
 When using this compiler to build Perl, you should make sure that the
 flag -Aa is added to the cpprun and cppstdin variables in the config.sh
-file (though see the section on 64-bit perl below).
+file (though see the section on 64-bit perl below). If you are using a
+recent version of the Perl distribution, these flags are set automatically.
 
 =head2 Using Large Files with Perl
 
@@ -185,17 +250,23 @@ cannot be compiled, or that does not function as expected.
 
 =head2 Threaded Perl
 
-It is impossible to compile a version of threaded Perl on any version of
-HP-UX before 10.30, and it is strongly suggested that you be running on
+It is possible to compile a version of threaded Perl on any version of
+HP-UX before 10.30, but it is strongly suggested that you be running on
 HP-UX 11.00 at least.
 
 To compile Perl with threads, add -Dusethreads to the arguments of
 Configure.  Verify that the -D_POSIX_C_SOURCE=199506L compiler flag is
 automatically added to the list of flags.  Also make sure that -lpthread
-is listed before -lc in the list of libraries to link Perl with.
+is listed before -lc in the list of libraries to link Perl with. The
+hints provided for HP-UX during Configure will try very hard to get
+this right for you.
 
-As of the date of this document, Perl threads are not fully supported on
-HP-UX.
+HP-UX versions before 10.30 require a seperate installation of a POSIX
+threads library package. Two examples are the HP DCE package, available
+on "HP-UX Hardware Extensions 3.0, Install and Core OS, Release 10.20,
+April 1999 (B3920-13941)" or the Freely available PTH package, available
+though worldwide HP-UX mirrors of precompiled packages
+(e.g. http://hpux.tn.tudelft.nl/hppd/hpux/alpha.html)
 
 =head2 64-bit Perl
 
@@ -241,6 +312,42 @@ If you are compiling Perl on a remotely-mounted NFS filesystem, the test
 io/fs.t may fail on test #18.  This appears to be a bug in HP-UX and no
 fix is currently available.
 
+=head2 perl -P and //
+
+In HP-UX Perl is compiled with flags that will cause problems if the
+-P flag of Perl (preprocess Perl code with the C preprocessor before
+perl sees it) is used.  The problem is that C<//>, being a C++-style
+until-end-of-line comment, will disappear along with the remainder
+of the line.  This means that common Perl constructs like
+
+    s/foo//;
+
+will turn into illegal code
+
+    s/foo
+
+The workaround is to use some other quoting separator than C<"/">,
+like for example C<"!">:
+
+    s!foo!!;
+
+=head2 Kernel parameters (maxdsiz)
+
+By default, HP-UX comes configured with a maximum data segment size of
+64MB.  This is too small to correctly compile Perl with the maximum
+optimization levels.  You can increase the size of the maxdsiz kernel
+parameter through the use of SAM.
+
+When using the GUI version of SAM, click on the Kernel Configuration
+icon, then the Configurable Parameters icon.  Scroll down and select
+the maxdsiz line.  From the Actions menu, select the Modify Configurable
+Parameter item.  Insert the new formula into the Formula/Value box.
+Then follow the instructions to rebuild your kernel and reboot your
+system.
+
+In general, a value of 256MB (or "256*1024*1024") is sufficient for
+Perl to compile at maximum optimization.
+
 =head1 AUTHOR
 
 Jeff Okamoto <okamoto@corp.hp.com>
@@ -249,6 +356,6 @@ With much assistance regarding shared libraries from Marc Sabatella.
 
 =head1 DATE
 
-Version 0.6.1: 2000/06/20
+Version 0.6.3: 2001-05-16
 
 =cut