1PERLHPUX(1)            Perl Programmers Reference Guide            PERLHPUX(1)
2
3
4

NAME

6       perlhpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
7

DESCRIPTION

9       This document describes various features of HP's Unix operating system
10       (HP-UX) that will affect how Perl version 5 (hereafter just Perl) is
11       compiled and/or runs.
12
13   Using perl as shipped with HP-UX
14       Application release September 2001, HP-UX 11.00 is the first to ship
15       with Perl. By the time it was perl-5.6.1 in /opt/perl. The first
16       occurrence is on CD 5012-7954 and can be installed using
17
18         swinstall -s /cdrom perl
19
20       assuming you have mounted that CD on /cdrom.
21
22       That build was a portable hppa-1.1 multithread build that supports
23       large files compiled with gcc-2.9-hppa-991112.
24
25       If you perform a new installation, then (a newer) Perl will be
26       installed automatically.  Pre-installed HP-UX systems now have more
27       recent versions of Perl and the updated modules.
28
29       The official (threaded) builds from HP, as they are shipped on the
30       Application DVD/CD's are available on
31       <http://www.software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=PERL>
32       for both PA-RISC and IPF (Itanium Processor Family). They are built
33       with the HP ANSI-C compiler. Up till 5.8.8 that was done by
34       ActiveState.
35
36       To see what version is included on the DVD (assumed here to be mounted
37       on /cdrom), issue this command:
38
39         # swlist -s /cdrom perl
40         # perl           D.5.8.8.B  5.8.8 Perl Programming Language
41           perl.Perl5-32  D.5.8.8.B  32-bit 5.8.8 Perl Programming Language
42                                                  with Extensions
43           perl.Perl5-64  D.5.8.8.B  64-bit 5.8.8 Perl Programming Language
44                                                  with Extensions
45
46       To see what is installed on your system:
47
48         # swlist -R perl
49         # perl                    E.5.8.8.J  Perl Programming Language
50         # perl.Perl5-32           E.5.8.8.J  32-bit Perl Programming Language
51                                              with Extensions
52           perl.Perl5-32.PERL-MAN  E.5.8.8.J  32-bit Perl Man Pages for IA
53           perl.Perl5-32.PERL-RUN  E.5.8.8.J  32-bit Perl Binaries for IA
54         # perl.Perl5-64           E.5.8.8.J  64-bit Perl Programming Language
55                                              with Extensions
56           perl.Perl5-64.PERL-MAN  E.5.8.8.J  64-bit Perl Man Pages for IA
57           perl.Perl5-64.PERL-RUN  E.5.8.8.J  64-bit Perl Binaries for IA
58
59   Using perl from HP's porting centre
60       HP porting centre tries to keep up with customer demand and release
61       updates from the Open Source community. Having precompiled Perl
62       binaries available is obvious, though "up-to-date" is something
63       relative. At the moment of writing only perl-5.10.1 was available (with
64       5.16.3 being the latest stable release from the porters point of view).
65
66       The HP porting centres are limited in what systems they are allowed to
67       port to and they usually choose the two most recent OS versions
68       available.
69
70       HP has asked the porting centre to move Open Source binaries from /opt
71       to /usr/local, so binaries produced since the start of July 2002 are
72       located in /usr/local.
73
74       One of HP porting centres URL's is <http://hpux.connect.org.uk/> The
75       port currently available is built with GNU gcc.
76
77   Other prebuilt perl binaries
78       To get even more recent perl depots for the whole range of HP-UX, visit
79       H.Merijn Brand's site at <http://mirrors.develooper.com/hpux/#Perl>.
80       Carefully read the notes to see if the available versions suit your
81       needs.
82
83   Compiling Perl 5 on HP-UX
84       When compiling Perl, you must use an ANSI C compiler.  The C compiler
85       that ships with all HP-UX systems is a K&R compiler that should only be
86       used to build new kernels.
87
88       Perl can be compiled with either HP's ANSI C compiler or with gcc.  The
89       former is recommended, as not only can it compile Perl with no
90       difficulty, but also can take advantage of features listed later that
91       require the use of HP compiler-specific command-line flags.
92
93       If you decide to use gcc, make sure your installation is recent and
94       complete, and be sure to read the Perl INSTALL file for more gcc-
95       specific details.
96
97   PA-RISC
98       HP's HP9000 Unix systems run on HP's own Precision Architecture (PA-
99       RISC) chip.  HP-UX used to run on the Motorola MC68000 family of chips,
100       but any machine with this chip in it is quite obsolete and this
101       document will not attempt to address issues for compiling Perl on the
102       Motorola chipset.
103
104       The version of PA-RISC at the time of this document's last update is
105       2.0, which is also the last there will be. HP PA-RISC systems are
106       usually referred to with model description "HP 9000". The last CPU in
107       this series is the PA-8900.  Support for PA-RISC architectured machines
108       officially ends as shown in the following table:
109
110          PA-RISC End-of-Life Roadmap
111        +--------+----------------+----------------+-----------------+
112        | HP9000 | Superdome      | PA-8700        | Spring 2011     |
113        | 4-128  |                | PA-8800/sx1000 | Summer 2012     |
114        | cores  |                | PA-8900/sx1000 | 2014            |
115        |        |                | PA-8900/sx2000 | 2015            |
116        +--------+----------------+----------------+-----------------+
117        | HP9000 | rp7410, rp8400 | PA-8700        | Spring 2011     |
118        | 2-32   | rp7420, rp8420 | PA-8800/sx1000 | 2012            |
119        | cores  | rp7440, rp8440 | PA-8900/sx1000 | Autumn 2013     |
120        |        |                | PA-8900/sx2000 | 2015            |
121        +--------+----------------+----------------+-----------------+
122        | HP9000 | rp44x0         | PA-8700        | Spring 2011     |
123        | 1-8    |                | PA-8800/rp44x0 | 2012            |
124        | cores  |                | PA-8900/rp44x0 | 2014            |
125        +--------+----------------+----------------+-----------------+
126        | HP9000 | rp34x0         | PA-8700        | Spring 2011     |
127        | 1-4    |                | PA-8800/rp34x0 | 2012            |
128        | cores  |                | PA-8900/rp34x0 | 2014            |
129        +--------+----------------+----------------+-----------------+
130
131       From <http://www.hp.com/products1/evolution/9000/faqs.html>
132
133        The last order date for HP 9000 systems was December 31, 2008.
134
135       A complete list of models at the time the OS was built is in the file
136       /usr/sam/lib/mo/sched.models. The first column corresponds to the last
137       part of the output of the "model" command.  The second column is the
138       PA-RISC version and the third column is the exact chip type used.
139       (Start browsing at the bottom to prevent confusion ;-)
140
141         # model
142         9000/800/L1000-44
143         # grep L1000-44 /usr/sam/lib/mo/sched.models
144         L1000-44        2.0     PA8500
145
146   Portability Between PA-RISC Versions
147       An executable compiled on a PA-RISC 2.0 platform will not execute on a
148       PA-RISC 1.1 platform, even if they are running the same version of HP-
149       UX.  If you are building Perl on a PA-RISC 2.0 platform and want that
150       Perl to also run on a PA-RISC 1.1, the compiler flags +DAportable and
151       +DS32 should be used.
152
153       It is no longer possible to compile PA-RISC 1.0 executables on either
154       the PA-RISC 1.1 or 2.0 platforms.  The command-line flags are accepted,
155       but the resulting executable will not run when transferred to a PA-RISC
156       1.0 system.
157
158   PA-RISC 1.0
159       The original version of PA-RISC, HP no longer sells any system with
160       this chip.
161
162       The following systems contained PA-RISC 1.0 chips:
163
164         600, 635, 645, 808, 815, 822, 825, 832, 834, 835, 840, 842, 845, 850,
165         852, 855, 860, 865, 870, 890
166
167   PA-RISC 1.1
168       An upgrade to the PA-RISC design, it shipped for many years in many
169       different system.
170
171       The following systems contain with PA-RISC 1.1 chips:
172
173         705, 710, 712, 715, 720, 722, 725, 728, 730, 735, 742, 743, 744, 745,
174         747, 750, 755, 770, 777, 778, 779, 800, 801, 803, 806, 807, 809, 811,
175         813, 816, 817, 819, 821, 826, 827, 829, 831, 837, 839, 841, 847, 849,
176         851, 856, 857, 859, 867, 869, 877, 887, 891, 892, 897, A180, A180C,
177         B115, B120, B132L, B132L+, B160L, B180L, C100, C110, C115, C120,
178         C160L, D200, D210, D220, D230, D250, D260, D310, D320, D330, D350,
179         D360, D410, DX0, DX5, DXO, E25, E35, E45, E55, F10, F20, F30, G30,
180         G40, G50, G60, G70, H20, H30, H40, H50, H60, H70, I30, I40, I50, I60,
181         I70, J200, J210, J210XC, K100, K200, K210, K220, K230, K400, K410,
182         K420, S700i, S715, S744, S760, T500, T520
183
184   PA-RISC 2.0
185       The most recent upgrade to the PA-RISC design, it added support for
186       64-bit integer data.
187
188       As of the date of this document's last update, the following systems
189       contain PA-RISC 2.0 chips:
190
191         700, 780, 781, 782, 783, 785, 802, 804, 810, 820, 861, 871, 879, 889,
192         893, 895, 896, 898, 899, A400, A500, B1000, B2000, C130, C140, C160,
193         C180, C180+, C180-XP, C200+, C400+, C3000, C360, C3600, CB260, D270,
194         D280, D370, D380, D390, D650, J220, J2240, J280, J282, J400, J410,
195         J5000, J5500XM, J5600, J7000, J7600, K250, K260, K260-EG, K270, K360,
196         K370, K380, K450, K460, K460-EG, K460-XP, K470, K570, K580, L1000,
197         L2000, L3000, N4000, R380, R390, SD16000, SD32000, SD64000, T540,
198         T600, V2000, V2200, V2250, V2500, V2600
199
200       Just before HP took over Compaq, some systems were renamed. the link
201       that contained the explanation is dead, so here's a short summary:
202
203         HP 9000 A-Class servers, now renamed HP Server rp2400 series.
204         HP 9000 L-Class servers, now renamed HP Server rp5400 series.
205         HP 9000 N-Class servers, now renamed HP Server rp7400.
206
207         rp2400, rp2405, rp2430, rp2450, rp2470, rp3410, rp3440, rp4410,
208         rp4440, rp5400, rp5405, rp5430, rp5450, rp5470, rp7400, rp7405,
209         rp7410, rp7420, rp7440, rp8400, rp8420, rp8440, Superdome
210
211       The current naming convention is:
212
213         aadddd
214         ||||`+- 00 - 99 relative capacity & newness (upgrades, etc.)
215         |||`--- unique number for each architecture to ensure different
216         |||     systems do not have the same numbering across
217         |||     architectures
218         ||`---- 1 - 9 identifies family and/or relative positioning
219         ||
220         |`----- c = ia32 (cisc)
221         |       p = pa-risc
222         |       x = ia-64 (Itanium & Itanium 2)
223         |       h = housing
224         `------ t = tower
225                 r = rack optimized
226                 s = super scalable
227                 b = blade
228                 sa = appliance
229
230   Itanium Processor Family (IPF) and HP-UX
231       HP-UX also runs on the new Itanium processor.  This requires the use of
232       a different version of HP-UX (currently 11.23 or 11i v2), and with the
233       exception of a few differences detailed below and in later sections,
234       Perl should compile with no problems.
235
236       Although PA-RISC binaries can run on Itanium systems, you should not
237       attempt to use a PA-RISC version of Perl on an Itanium system.  This is
238       because shared libraries created on an Itanium system cannot be loaded
239       while running a PA-RISC executable.
240
241       HP Itanium 2 systems are usually referred to with model description "HP
242       Integrity".
243
244   Itanium, Itanium 2 & Madison 6
245       HP also ships servers with the 128-bit Itanium processor(s). The cx26x0
246       is told to have Madison 6. As of the date of this document's last
247       update, the following systems contain Itanium or Itanium 2 chips (this
248       is likely to be out of date):
249
250         BL60p, BL860c, BL870c, BL890c, cx2600, cx2620, rx1600, rx1620, rx2600,
251         rx2600hptc, rx2620, rx2660, rx2800, rx3600, rx4610, rx4640, rx5670,
252         rx6600, rx7420, rx7620, rx7640, rx8420, rx8620, rx8640, rx9610,
253         sx1000, sx2000
254
255       To see all about your machine, type
256
257         # model
258         ia64 hp server rx2600
259         # /usr/contrib/bin/machinfo
260
261   HP-UX versions
262       Not all architectures (PA = PA-RISC, IPF = Itanium Processor Family)
263       support all versions of HP-UX, here is a short list
264
265         HP-UX version  Kernel  Architecture End-of-factory support
266         -------------  ------  ------------ ----------------------------------
267         10.20          32 bit  PA           30-Jun-2003
268         11.00          32/64   PA           31-Dec-2006
269         11.11  11i v1  32/64   PA           31-Dec-2015
270         11.22  11i v2     64        IPF     30-Apr-2004
271         11.23  11i v2     64   PA & IPF     31-Dec-2015
272         11.31  11i v3     64   PA & IPF     31-Dec-2020 (PA) 31-Dec-2022 (IPF)
273
274       See for the full list of hardware/OS support and expected end-of-life
275       <http://www.hp.com/go/hpuxservermatrix>
276
277   Building Dynamic Extensions on HP-UX
278       HP-UX supports dynamically loadable libraries (shared libraries).
279       Shared libraries end with the suffix .sl.  On Itanium systems, they end
280       with the suffix .so.
281
282       Shared libraries created on a platform using a particular PA-RISC
283       version are not usable on platforms using an earlier PA-RISC version by
284       default.  However, this backwards compatibility may be enabled using
285       the same +DAportable compiler flag (with the same PA-RISC 1.0 caveat
286       mentioned above).
287
288       Shared libraries created on an Itanium platform cannot be loaded on a
289       PA-RISC platform.  Shared libraries created on a PA-RISC platform can
290       only be loaded on an Itanium platform if it is a PA-RISC executable
291       that is attempting to load the PA-RISC library.  A PA-RISC shared
292       library cannot be loaded into an Itanium executable nor vice-versa.
293
294       To create a shared library, the following steps must be performed:
295
296         1. Compile source modules with +z or +Z flag to create a .o module
297            which contains Position-Independent Code (PIC).  The linker will
298            tell you in the next step if +Z was needed.
299            (For gcc, the appropriate flag is -fpic or -fPIC.)
300
301         2. Link the shared library using the -b flag.  If the code calls
302            any functions in other system libraries (e.g., libm), it must
303            be included on this line.
304
305       (Note that these steps are usually handled automatically by the
306       extension's Makefile).
307
308       If these dependent libraries are not listed at shared library creation
309       time, you will get fatal "Unresolved symbol" errors at run time when
310       the library is loaded.
311
312       You may create a shared library that refers to another library, which
313       may be either an archive library or a shared library.  If this second
314       library is a shared library, this is called a "dependent library".  The
315       dependent library's name is recorded in the main shared library, but it
316       is not linked into the shared library.  Instead, it is loaded when the
317       main shared library is loaded.  This can cause problems if you build an
318       extension on one system and move it to another system where the
319       libraries may not be located in the same place as on the first system.
320
321       If the referred library is an archive library, then it is treated as a
322       simple collection of .o modules (all of which must contain PIC).  These
323       modules are then linked into the shared library.
324
325       Note that it is okay to create a library which contains a dependent
326       library that is already linked into perl.
327
328       Some extensions, like DB_File and Compress::Zlib use/require prebuilt
329       libraries for the perl extensions/modules to work. If these libraries
330       are built using the default configuration, it might happen that you run
331       into an error like "invalid loader fixup" during load phase.  HP is
332       aware of this problem.  Search the HP-UX cxx-dev forums for discussions
333       about the subject.  The short answer is that everything (all libraries,
334       everything) must be compiled with "+z" or "+Z" to be PIC (position
335       independent code).  (For gcc, that would be "-fpic" or "-fPIC").  In
336       HP-UX 11.00 or newer the linker error message should tell the name of
337       the offending object file.
338
339       A more general approach is to intervene manually, as with an example
340       for the DB_File module, which requires SleepyCat's libdb.sl:
341
342         # cd .../db-3.2.9/build_unix
343         # vi Makefile
344         ... add +Z to all cflags to create shared objects
345         CFLAGS=         -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
346                         -I/usr/local/include -I/usr/include/X11R6
347         CXXFLAGS=       -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
348                         -I/usr/local/include -I/usr/include/X11R6
349
350         # make clean
351         # make
352         # mkdir tmp
353         # cd tmp
354         # ar x ../libdb.a
355         # ld -b -o libdb-3.2.sl *.o
356         # mv libdb-3.2.sl /usr/local/lib
357         # rm *.o
358         # cd /usr/local/lib
359         # rm -f libdb.sl
360         # ln -s libdb-3.2.sl libdb.sl
361
362         # cd .../DB_File-1.76
363         # make distclean
364         # perl Makefile.PL
365         # make
366         # make test
367         # make install
368
369       As of db-4.2.x it is no longer needed to do this by hand. Sleepycat has
370       changed the configuration process to add +z on HP-UX automatically.
371
372         # cd .../db-4.2.25/build_unix
373         # env CFLAGS=+DD64 LDFLAGS=+DD64 ../dist/configure
374
375       should work to generate 64bit shared libraries for HP-UX 11.00 and 11i.
376
377       It is no longer possible to link PA-RISC 1.0 shared libraries (even
378       though the command-line flags are still present).
379
380       PA-RISC and Itanium object files are not interchangeable.  Although you
381       may be able to use ar to create an archive library of PA-RISC object
382       files on an Itanium system, you cannot link against it using an Itanium
383       link editor.
384
385   The HP ANSI C Compiler
386       When using this compiler to build Perl, you should make sure that the
387       flag -Aa is added to the cpprun and cppstdin variables in the config.sh
388       file (though see the section on 64-bit perl below). If you are using a
389       recent version of the Perl distribution, these flags are set
390       automatically.
391
392       Even though HP-UX 10.20 and 11.00 are not actively maintained by HP
393       anymore, updates for the HP ANSI C compiler are still available from
394       time to time, and it might be advisable to see if updates are
395       applicable.  At the moment of writing, the latests available patches
396       for 11.00 that should be applied are PHSS_35098, PHSS_35175,
397       PHSS_35100, PHSS_33036, and PHSS_33902). If you have a SUM account, you
398       can use it to search for updates/patches. Enter "ANSI" as keyword.
399
400   The GNU C Compiler
401       When you are going to use the GNU C compiler (gcc), and you don't have
402       gcc yet, you can either build it yourself from the sources (available
403       from e.g. <http://gcc.gnu.org/mirrors.html>) or fetch a prebuilt binary
404       from the HP porting center at
405       <http://hpux.connect.org.uk/hppd/cgi-bin/search?term=gcc&Search=Search>
406       or from the DSPP (you need to be a member) at
407       <http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=2a08725cc2f02110725cc2f02110275d6e10RCRD&jumpid=reg_r1002_usen_c-001_title_r0001>
408       (Browse through the list, because there are often multiple versions of
409       the same package available).
410
411       Most mentioned distributions are depots. H.Merijn Brand has made
412       prebuilt gcc binaries available on
413       <http://mirrors.develooper.com/hpux/> and/or
414       <http://www.cmve.net/~merijn/> for HP-UX 10.20 (only 32bit), HP-UX
415       11.00, HP-UX 11.11 (HP-UX 11i v1), and HP-UX 11.23 (HP-UX 11i v2 PA-
416       RISC) in both 32- and 64-bit versions. For HP-UX 11.23 IPF and HP-UX
417       11.31 IPF depots are available too. The IPF versions do not need two
418       versions of GNU gcc.
419
420       On PA-RISC you need a different compiler for 32-bit applications and
421       for 64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects
422       do not mix. Period. There is no different behaviour for HP C-ANSI-C or
423       GNU gcc. So if you require your perl binary to use 64-bit libraries,
424       like Oracle-64bit, you MUST build a 64-bit perl.
425
426       Building a 64-bit capable gcc on PA-RISC from source is possible only
427       when you have the HP C-ANSI C compiler or an already working 64-bit
428       binary of gcc available. Best performance for perl is achieved with
429       HP's native compiler.
430
431   Using Large Files with Perl on HP-UX
432       Beginning with HP-UX version 10.20, files larger than 2GB (2^31 bytes)
433       may be created and manipulated.  Three separate methods of doing this
434       are available.  Of these methods, the best method for Perl is to
435       compile using the -Duselargefiles flag to Configure.  This causes Perl
436       to be compiled using structures and functions in which these are 64
437       bits wide, rather than 32 bits wide.  (Note that this will only work
438       with HP's ANSI C compiler.  If you want to compile Perl using gcc, you
439       will have to get a version of the compiler that supports 64-bit
440       operations. See above for where to find it.)
441
442       There are some drawbacks to this approach.  One is that any extension
443       which calls any file-manipulating C function will need to be recompiled
444       (just follow the usual "perl Makefile.PL; make; make test; make
445       install" procedure).
446
447       The list of functions that will need to recompiled is:
448         creat,          fgetpos,        fopen,
449         freopen,        fsetpos,        fstat,
450         fstatvfs,       fstatvfsdev,    ftruncate,
451         ftw,            lockf,          lseek,
452         lstat,          mmap,           nftw,
453         open,           prealloc,       stat,
454         statvfs,        statvfsdev,     tmpfile,
455         truncate,       getrlimit,      setrlimit
456
457       Another drawback is only valid for Perl versions before 5.6.0.  This
458       drawback is that the seek and tell functions (both the builtin version
459       and POSIX module version) will not perform correctly.
460
461       It is strongly recommended that you use this flag when you run
462       Configure.  If you do not do this, but later answer the question about
463       large files when Configure asks you, you may get a configuration that
464       cannot be compiled, or that does not function as expected.
465
466   Threaded Perl on HP-UX
467       It is possible to compile a version of threaded Perl on any version of
468       HP-UX before 10.30, but it is strongly suggested that you be running on
469       HP-UX 11.00 at least.
470
471       To compile Perl with threads, add -Dusethreads to the arguments of
472       Configure.  Verify that the -D_POSIX_C_SOURCE=199506L compiler flag is
473       automatically added to the list of flags.  Also make sure that
474       -lpthread is listed before -lc in the list of libraries to link Perl
475       with. The hints provided for HP-UX during Configure will try very hard
476       to get this right for you.
477
478       HP-UX versions before 10.30 require a separate installation of a POSIX
479       threads library package. Two examples are the HP DCE package, available
480       on "HP-UX Hardware Extensions 3.0, Install and Core OS, Release 10.20,
481       April 1999 (B3920-13941)" or the Freely available PTH package,
482       available on H.Merijn's site (<http://mirrors.develooper.com/hpux/>).
483       The use of PTH will be unsupported in perl-5.12 and up and is rather
484       buggy in 5.11.x.
485
486       If you are going to use the HP DCE package, the library used for
487       threading is /usr/lib/libcma.sl, but there have been multiple updates
488       of that library over time. Perl will build with the first version, but
489       it will not pass the test suite. Older Oracle versions might be a
490       compelling reason not to update that library, otherwise please find a
491       newer version in one of the following patches: PHSS_19739, PHSS_20608,
492       or PHSS_23672
493
494       reformatted output:
495
496         d3:/usr/lib 106 > what libcma-*.1
497         libcma-00000.1:
498            HP DCE/9000 1.5               Module: libcma.sl (Export)
499                                          Date: Apr 29 1996 22:11:24
500         libcma-19739.1:
501            HP DCE/9000 1.5 PHSS_19739-40 Module: libcma.sl (Export)
502                                          Date: Sep  4 1999 01:59:07
503         libcma-20608.1:
504            HP DCE/9000 1.5 PHSS_20608    Module: libcma.1 (Export)
505                                          Date: Dec  8 1999 18:41:23
506         libcma-23672.1:
507            HP DCE/9000 1.5 PHSS_23672    Module: libcma.1 (Export)
508                                          Date: Apr  9 2001 10:01:06
509         d3:/usr/lib 107 >
510
511       If you choose for the PTH package, use swinstall to install pth in the
512       default location (/opt/pth), and then make symbolic links to the
513       libraries from /usr/lib
514
515         # cd /usr/lib
516         # ln -s /opt/pth/lib/libpth* .
517
518       For building perl to support Oracle, it needs to be linked with libcl
519       and libpthread. So even if your perl is an unthreaded build, these
520       libraries might be required. See "Oracle on HP-UX" below.
521
522   64-bit Perl on HP-UX
523       Beginning with HP-UX 11.00, programs compiled under HP-UX can take
524       advantage of the LP64 programming environment (LP64 means Longs and
525       Pointers are 64 bits wide), in which scalar variables will be able to
526       hold numbers larger than 2^32 with complete precision.  Perl has proven
527       to be consistent and reliable in 64bit mode since 5.8.1 on all HP-UX
528       11.xx.
529
530       As of the date of this document, Perl is fully 64-bit compliant on HP-
531       UX 11.00 and up for both cc- and gcc builds. If you are about to build
532       a 64-bit perl with GNU gcc, please read the gcc section carefully.
533
534       Should a user have the need for compiling Perl in the LP64 environment,
535       use the -Duse64bitall flag to Configure.  This will force Perl to be
536       compiled in a pure LP64 environment (with the +DD64 flag for HP C-ANSI-
537       C, with no additional options for GNU gcc 64-bit on PA-RISC, and with
538       -mlp64 for GNU gcc on Itanium).  If you want to compile Perl using gcc,
539       you will have to get a version of the compiler that supports 64-bit
540       operations.)
541
542       You can also use the -Duse64bitint flag to Configure.  Although there
543       are some minor differences between compiling Perl with this flag versus
544       the -Duse64bitall flag, they should not be noticeable from a Perl
545       user's perspective. When configuring -Duse64bitint using a 64bit gcc on
546       a pa-risc architecture, -Duse64bitint is silently promoted to
547       -Duse64bitall.
548
549       In both cases, it is strongly recommended that you use these flags when
550       you run Configure.  If you do not use do this, but later answer the
551       questions about 64-bit numbers when Configure asks you, you may get a
552       configuration that cannot be compiled, or that does not function as
553       expected.
554
555   Oracle on HP-UX
556       Using perl to connect to Oracle databases through DBI and DBD::Oracle
557       has caused a lot of people many headaches. Read README.hpux in the
558       DBD::Oracle for much more information. The reason to mention it here is
559       that Oracle requires a perl built with libcl and libpthread, the latter
560       even when perl is build without threads. Building perl using all
561       defaults, but still enabling to build DBD::Oracle later on can be
562       achieved using
563
564         Configure -A prepend:libswanted='cl pthread ' ...
565
566       Do not forget the space before the trailing quote.
567
568       Also note that this does not (yet) work with all configurations, it is
569       known to fail with 64-bit versions of GCC.
570
571   GDBM and Threads on HP-UX
572       If you attempt to compile Perl with (POSIX) threads on an 11.X system
573       and also link in the GDBM library, then Perl will immediately core dump
574       when it starts up.  The only workaround at this point is to relink the
575       GDBM library under 11.X, then relink it into Perl.
576
577       the error might show something like:
578
579       Pthread internal error: message: __libc_reinit() failed, file:
580       ../pthreads/pthread.c, line: 1096 Return Pointer is 0xc082bf33 sh: 5345
581       Quit(coredump)
582
583       and Configure will give up.
584
585   NFS filesystems and utime(2) on HP-UX
586       If you are compiling Perl on a remotely-mounted NFS filesystem, the
587       test io/fs.t may fail on test #18.  This appears to be a bug in HP-UX
588       and no fix is currently available.
589
590   HP-UX Kernel Parameters (maxdsiz) for Compiling Perl
591       By default, HP-UX comes configured with a maximum data segment size of
592       64MB.  This is too small to correctly compile Perl with the maximum
593       optimization levels.  You can increase the size of the maxdsiz kernel
594       parameter through the use of SAM.
595
596       When using the GUI version of SAM, click on the Kernel Configuration
597       icon, then the Configurable Parameters icon.  Scroll down and select
598       the maxdsiz line.  From the Actions menu, select the Modify
599       Configurable Parameter item.  Insert the new formula into the
600       Formula/Value box.  Then follow the instructions to rebuild your kernel
601       and reboot your system.
602
603       In general, a value of 256MB (or "256*1024*1024") is sufficient for
604       Perl to compile at maximum optimization.
605

nss_delete core dump from op/pwent or op/grent

607       You may get a bus error core dump from the op/pwent or op/grent tests.
608       If compiled with -g you will see a stack trace much like the following:
609
610         #0  0xc004216c in  () from /usr/lib/libc.2
611         #1  0xc00d7550 in __nss_src_state_destr () from /usr/lib/libc.2
612         #2  0xc00d7768 in __nss_src_state_destr () from /usr/lib/libc.2
613         #3  0xc00d78a8 in nss_delete () from /usr/lib/libc.2
614         #4  0xc01126d8 in endpwent () from /usr/lib/libc.2
615         #5  0xd1950 in Perl_pp_epwent () from ./perl
616         #6  0x94d3c in Perl_runops_standard () from ./perl
617         #7  0x23728 in S_run_body () from ./perl
618         #8  0x23428 in perl_run () from ./perl
619         #9  0x2005c in main () from ./perl
620
621       The key here is the "nss_delete" call.  One workaround for this bug
622       seems to be to create add to the file /etc/nsswitch.conf (at least) the
623       following lines
624
625         group: files
626         passwd: files
627
628       Whether you are using NIS does not matter.  Amazingly enough, the same
629       bug also affects Solaris.
630

error: pasting ")" and "l" does not give a valid preprocessing token

632       There seems to be a broken system header file in HP-UX 11.00 that
633       breaks perl building in 32bit mode with GNU gcc-4.x causing this error.
634       The same file for HP-UX 11.11 (even though the file is older) does not
635       show this failure, and has the correct definition, so the best fix is
636       to patch the header to match:
637
638        --- /usr/include/inttypes.h  2001-04-20 18:42:14 +0200
639        +++ /usr/include/inttypes.h  2000-11-14 09:00:00 +0200
640        @@ -72,7 +72,7 @@
641         #define UINT32_C(__c)                   __CONCAT_U__(__c)
642         #else /* __LP64 */
643         #define INT32_C(__c)                    __CONCAT__(__c,l)
644        -#define UINT32_C(__c)                   __CONCAT__(__CONCAT_U__(__c),l)
645        +#define UINT32_C(__c)                   __CONCAT__(__c,ul)
646         #endif /* __LP64 */
647
648         #define INT64_C(__c)                    __CONCAT_L__(__c,l)
649

Redeclaration of "sendpath" with a different storage class specifier

651       The following compilation warnings may happen in HP-UX releases earlier
652       than 11.31 but are harmless:
653
654        cc: "/usr/include/sys/socket.h", line 535: warning 562:
655           Redeclaration of "sendfile" with a different storage class
656           specifier: "sendfile" will have internal linkage.
657        cc: "/usr/include/sys/socket.h", line 536: warning 562:
658           Redeclaration of "sendpath" with a different storage class
659           specifier: "sendpath" will have internal linkage.
660
661       They seem to be caused by broken system header files, and also other
662       open source projects are seeing them.  The following HP-UX patches
663       should make the warnings go away:
664
665         CR JAGae12001: PHNE_27063
666         Warning 562 on sys/socket.h due to redeclaration of prototypes
667
668         CR JAGae16787:
669         Warning 562 from socket.h sendpath/sendfile -D_FILEFFSET_BITS=64
670
671         CR JAGae73470 (11.23)
672         ER: Compiling socket.h with cc -D_FILEFFSET_BITS=64 warning 267/562
673

Miscellaneous

675       HP-UX 11 Y2K patch "Y2K-1100 B.11.00.B0125 HP-UX Core OS Year 2000
676       Patch Bundle" has been reported to break the io/fs test #18 which tests
677       whether utime() can change timestamps.  The Y2K patch seems to break
678       utime() so that over NFS the timestamps do not get changed (on local
679       filesystems utime() still works). This has probably been fixed on your
680       system by now.
681

AUTHOR

683       H.Merijn Brand <h.m.brand@xs4all.nl> Jeff Okamoto <okamoto@corp.hp.com>
684
685       With much assistance regarding shared libraries from Marc Sabatella.
686
687
688
689perl v5.28.2                      2018-03-01                       PERLHPUX(1)
Impressum