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
/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
+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
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
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
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
=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
=head2 perl -P and //
-In HP-UX perl is compiled with flags that will cause problems if the
+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//;
+ s/foo//;
will turn into illegal code
- s/foo
+ s/foo
+
+The workaround is to use some other quoting separator than C<"/">,
+like for example C<"!">:
-The workaround is to use some other quoting characters than /,
-like for example !
+ 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.
- s!foo!!;
+In general, a value of 256MB (or "256*1024*1024") is sufficient for
+Perl to compile at maximum optimization.
=head1 AUTHOR
=head1 DATE
-Version 0.6.1: 2000/06/20
+Version 0.6.3: 2001-05-16
=cut