Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man1 / perlhpux.1
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "PERLHPUX 1"
132.TH PERLHPUX 1 "2006-01-07" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134README.hpux \- Perl version 5 on Hewlett\-Packard Unix (HP\-UX) systems
135.SH "DESCRIPTION"
136.IX Header "DESCRIPTION"
137This document describes various features of \s-1HP\s0's Unix operating system
138(\s-1HP\-UX\s0) that will affect how Perl version 5 (hereafter just Perl) is
139compiled and/or runs.
140.Sh "Using perl as shipped with HP-UX"
141.IX Subsection "Using perl as shipped with HP-UX"
142Application release September 2001, HP-UX 11.00 is the first to ship
143with Perl. By the time it was perl\-5.6.1 in /opt/perl. The first
144occurrence is on \s-1CD\s0 5012\-7954 and can be installed using
145.PP
146.Vb 1
147\& swinstall -s /cdrom perl
148.Ve
149.PP
150assuming you have mounted that \s-1CD\s0 on /cdrom. In this version the
151following modules were installed:
152.PP
153.Vb 8
154\& ActivePerl::DocTools-0.04 HTML::Parser-3.19 XML::DOM-1.25
155\& Archive::Tar-0.072 HTML::Tagset-3.03 XML::Parser-2.27
156\& Compress::Zlib-1.08 MIME::Base64-2.11 XML::Simple-1.05
157\& Convert::ASN1-0.10 Net-1.07 XML::XPath-1.09
158\& Digest::MD5-2.11 PPM-2.1.5 XML::XSLT-0.32
159\& File::CounterFile-0.12 SOAP::Lite-0.46 libwww-perl-5.51
160\& Font::AFM-1.18 Storable-1.011 libxml-perl-0.07
161\& HTML-Tree-3.11 URI-1.11 perl-ldap-0.23
162.Ve
163.PP
164The build was a portable hppa\-1.1 multithread build that supports large
165files compiled with gcc\-2.9\-hppa\-991112
166.PP
167If you perform a new installation, then Perl will be installed
168automatically.
169.PP
170More recent (preinstalled) HP-UX systems have more recent versions of
171Perl and the updated modules.
172.Sh "Using perl from \s-1HP\s0's porting centre"
173.IX Subsection "Using perl from HP's porting centre"
174\&\s-1HP\s0 porting centre tries very hard to keep up with customer demand and
175release updates from the Open Source community. Having precompiled
176Perl binaries available is obvious.
177.PP
178The \s-1HP\s0 porting centres are limited in what systems they are allowed
179to port to and they usually choose the two most recent \s-1OS\s0 versions
180available. This means that at the moment of writing, there are only
181HP-UX 11.11 (pa\-risc 2.0) and HP-UX 11.23 (Itanium 2) ports available
182on the porting centres.
183.PP
184\&\s-1HP\s0 has asked the porting centre to move Open Source binaries
185from /opt to /usr/local, so binaries produced since the start
186of July 2002 are located in /usr/local.
187.PP
188One of \s-1HP\s0 porting centres \s-1URL\s0's is http://hpux.connect.org.uk/
189The port currently available is built with \s-1GNU\s0 gcc.
190.Sh "Compiling Perl 5 on HP-UX"
191.IX Subsection "Compiling Perl 5 on HP-UX"
192When compiling Perl, you must use an \s-1ANSI\s0 C compiler. The C compiler
193that ships with all HP-UX systems is a K&R compiler that should only be
194used to build new kernels.
195.PP
196Perl can be compiled with either \s-1HP\s0's \s-1ANSI\s0 C compiler or with gcc. The
197former is recommended, as not only can it compile Perl with no
198difficulty, but also can take advantage of features listed later that
199require the use of \s-1HP\s0 compiler-specific command-line flags.
200.PP
201If you decide to use gcc, make sure your installation is recent and
202complete, and be sure to read the Perl \s-1INSTALL\s0 file for more gcc-specific
203details.
204.Sh "PA-RISC"
205.IX Subsection "PA-RISC"
206\&\s-1HP\s0's current Unix systems run on its own Precision Architecture
207(\s-1PA\-RISC\s0) chip. HP-UX used to run on the Motorola \s-1MC68000\s0 family of
208chips, but any machine with this chip in it is quite obsolete and this
209document will not attempt to address issues for compiling Perl on the
210Motorola chipset.
211.PP
212The most recent version of PA-RISC at the time of this document's last
213update is 2.0. \s-1HP\s0 PA-RISC systems are usually refered to with model
214description \*(L"\s-1HP\s0 9000\*(R".
215.PP
216A complete list of models at the time the \s-1OS\s0 was built is in the file
217/usr/sam/lib/mo/sched.models. The first column corresponds to the last
218part of the output of the \*(L"model\*(R" command. The second column is the
219PA-RISC version and the third column is the exact chip type used.
220(Start browsing at the bottom to prevent confusion ;\-)
221.PP
222.Vb 4
223\& # model
224\& 9000/800/L1000-44
225\& # grep L1000-44 /usr/sam/lib/mo/sched.models
226\& L1000-44 2.0 PA8500
227.Ve
228.Sh "Portability Between PA-RISC Versions"
229.IX Subsection "Portability Between PA-RISC Versions"
230An executable compiled on a PA-RISC 2.0 platform will not execute on a
231PA-RISC 1.1 platform, even if they are running the same version of
232\&\s-1HP\-UX\s0. If you are building Perl on a PA-RISC 2.0 platform and want that
233Perl to also run on a PA-RISC 1.1, the compiler flags +DAportable and
234+DS32 should be used.
235.PP
236It is no longer possible to compile PA-RISC 1.0 executables on either
237the PA-RISC 1.1 or 2.0 platforms. The command-line flags are accepted,
238but the resulting executable will not run when transferred to a PA-RISC
2391.0 system.
240.Sh "PA-RISC 1.0"
241.IX Subsection "PA-RISC 1.0"
242The original version of \s-1PA\-RISC\s0, \s-1HP\s0 no longer sells any system with this chip.
243.PP
244The following systems contained PA-RISC 1.0 chips:
245.PP
246.Vb 2
247\& 600, 635, 645, 808, 815, 822, 825, 832, 834, 835, 840, 842, 845, 850,
248\& 852, 855, 860, 865, 870, 890
249.Ve
250.Sh "PA-RISC 1.1"
251.IX Subsection "PA-RISC 1.1"
252An upgrade to the PA-RISC design, it shipped for many years in many different
253system.
254.PP
255The following systems contain with PA-RISC 1.1 chips:
256.PP
257.Vb 10
258\& 705, 710, 712, 715, 720, 722, 725, 728, 730, 735, 742, 743, 744, 745,
259\& 747, 750, 755, 770, 777, 778, 779, 800, 801, 803, 806, 807, 809, 811,
260\& 813, 816, 817, 819, 821, 826, 827, 829, 831, 837, 839, 841, 847, 849,
261\& 851, 856, 857, 859, 867, 869, 877, 887, 891, 892, 897, A180, A180C,
262\& B115, B120, B132L, B132L+, B160L, B180L, C100, C110, C115, C120,
263\& C160L, D200, D210, D220, D230, D250, D260, D310, D320, D330, D350,
264\& D360, D410, DX0, DX5, DXO, E25, E35, E45, E55, F10, F20, F30, G30,
265\& G40, G50, G60, G70, H20, H30, H40, H50, H60, H70, I30, I40, I50, I60,
266\& I70, J200, J210, J210XC, K100, K200, K210, K220, K230, K400, K410,
267\& K420, S700i, S715, S744, S760, T500, T520
268.Ve
269.Sh "PA-RISC 2.0"
270.IX Subsection "PA-RISC 2.0"
271The most recent upgrade to the PA-RISC design, it added support for
27264\-bit integer data.
273.PP
274As of the date of this document's last update, the following systems
275contain PA-RISC 2.0 chips:
276.PP
277.Vb 8
278\& 700, 780, 781, 782, 783, 785, 802, 804, 810, 820, 861, 871, 879, 889,
279\& 893, 895, 896, 898, 899, A400, A500, B1000, B2000, C130, C140, C160,
280\& C180, C180+, C180-XP, C200+, C400+, C3000, C360, C3600, CB260, D270,
281\& D280, D370, D380, D390, D650, J220, J2240, J280, J282, J400, J410,
282\& J5000, J5500XM, J5600, J7000, J7600, K250, K260, K260-EG, K270, K360,
283\& K370, K380, K450, K460, K460-EG, K460-XP, K470, K570, K580, L1000,
284\& L2000, L3000, N4000, R380, R390, SD16000, SD32000, SD64000, T540,
285\& T600, V2000, V2200, V2250, V2500, V2600
286.Ve
287.PP
288Just before \s-1HP\s0 took over Compaq, some systems were renamed. the link
289that contained the explanation is dead, so here's a short summary:
290.PP
291.Vb 3
292\& HP 9000 A-Class servers, now renamed HP Server rp2400 series.
293\& HP 9000 L-Class servers, now renamed HP Server rp5400 series.
294\& HP 9000 N-Class servers, now renamed HP Server rp7400.
295.Ve
296.PP
297.Vb 3
298\& rp2400, rp2405, rp2430, rp2450, rp2470, rp3410, rp3440, rp4410,
299\& rp4440, rp5400, rp5405, rp5430, rp5450, rp5470, rp7400, rp7405,
300\& rp7410, rp7420, rp8400, rp8420, Superdome
301.Ve
302.PP
303The current naming convention is:
304.PP
305.Vb 16
306\& aadddd
307\& ||||`+- 00 - 99 relative capacity & newness (upgrades, etc.)
308\& |||`--- unique number for each architecture to ensure different
309\& ||| systems do not have the same numbering across
310\& ||| architectures
311\& ||`---- 1 - 9 identifies family and/or relative positioning
312\& ||
313\& |`----- c = ia32 (cisc)
314\& | p = pa-risc
315\& | x = ia-64 (Itanium & Itanium 2)
316\& | h = housing
317\& `------ t = tower
318\& r = rack optimized
319\& s = super scalable
320\& b = blade
321\& sa = appliance
322.Ve
323.Sh "Itanium Processor Family and HP-UX"
324.IX Subsection "Itanium Processor Family and HP-UX"
325HP-UX also runs on the new Itanium processor. This requires the use
326of a different version of HP-UX (currently 11.23 or 11i v2), and with
327the exception of a few differences detailed below and in later sections,
328Perl should compile with no problems.
329.PP
330Although PA-RISC binaries can run on Itanium systems, you should not
331attempt to use a PA-RISC version of Perl on an Itanium system. This is
332because shared libraries created on an Itanium system cannot be loaded
333while running a PA-RISC executable.
334.PP
335\&\s-1HP\s0 Itanium 2 systems are usually refered to with model description
336\&\*(L"\s-1HP\s0 Integrity\*(R".
337.Sh "Itanium & Itanium 2"
338.IX Subsection "Itanium & Itanium 2"
339\&\s-1HP\s0 also ships servers with the 128\-bit Itanium processor(s). As of the
340date of this document's last update, the following systems contain
341Itanium or Itanium 2 chips (this is very likely to be out of date):
342.PP
343.Vb 2
344\& BL60p, rx1600, rx1620, rx2600, rx2600hptc, rx2620, rx4610, rx4640,
345\& rx5670, rx7620, rx8620, rx9610
346.Ve
347.PP
348To see all about your machine, type
349.PP
350.Vb 3
351\& # model
352\& ia64 hp server rx2600
353\& # /usr/contrib/bin/machinfo
354.Ve
355.Sh "Building Dynamic Extensions on HP-UX"
356.IX Subsection "Building Dynamic Extensions on HP-UX"
357HP-UX supports dynamically loadable libraries (shared libraries).
358Shared libraries end with the suffix .sl. On Itanium systems,
359they end with the suffix .so.
360.PP
361Shared libraries created on a platform using a particular PA-RISC
362version are not usable on platforms using an earlier PA-RISC version by
363default. However, this backwards compatibility may be enabled using the
364same +DAportable compiler flag (with the same PA-RISC 1.0 caveat
365mentioned above).
366.PP
367Shared libraries created on an Itanium platform cannot be loaded on
368a PA-RISC platform. Shared libraries created on a PA-RISC platform
369can only be loaded on an Itanium platform if it is a PA-RISC executable
370that is attempting to load the PA-RISC library. A PA-RISC shared
371library cannot be loaded into an Itanium executable nor vice\-versa.
372.PP
373To create a shared library, the following steps must be performed:
374.PP
375.Vb 4
376\& 1. Compile source modules with +z or +Z flag to create a .o module
377\& which contains Position-Independent Code (PIC). The linker will
378\& tell you in the next step if +Z was needed.
379\& (For gcc, the appropriate flag is -fpic or -fPIC.)
380.Ve
381.PP
382.Vb 3
383\& 2. Link the shared library using the -b flag. If the code calls
384\& any functions in other system libraries (e.g., libm), it must
385\& be included on this line.
386.Ve
387.PP
388(Note that these steps are usually handled automatically by the extension's
389Makefile).
390.PP
391If these dependent libraries are not listed at shared library creation
392time, you will get fatal \*(L"Unresolved symbol\*(R" errors at run time when the
393library is loaded.
394.PP
395You may create a shared library that refers to another library, which
396may be either an archive library or a shared library. If this second
397library is a shared library, this is called a \*(L"dependent library\*(R". The
398dependent library's name is recorded in the main shared library, but it
399is not linked into the shared library. Instead, it is loaded when the
400main shared library is loaded. This can cause problems if you build an
401extension on one system and move it to another system where the
402libraries may not be located in the same place as on the first system.
403.PP
404If the referred library is an archive library, then it is treated as a
405simple collection of .o modules (all of which must contain \s-1PIC\s0). These
406modules are then linked into the shared library.
407.PP
408Note that it is okay to create a library which contains a dependent
409library that is already linked into perl.
410.PP
411Some extensions, like DB_File and Compress::Zlib use/require prebuilt
412libraries for the perl extensions/modules to work. If these libraries
413are built using the default configuration, it might happen that you
414run into an error like \*(L"invalid loader fixup\*(R" during load phase.
415\&\s-1HP\s0 is aware of this problem. Search the HP-UX cxx-dev forums for
416discussions about the subject. The short answer is that \fBeverything\fR
417(all libraries, everything) must be compiled with \f(CW\*(C`+z\*(C'\fR or \f(CW\*(C`+Z\*(C'\fR to be
418\&\s-1PIC\s0 (position independent code). (For gcc, that would be
419\&\f(CW\*(C`\-fpic\*(C'\fR or \f(CW\*(C`\-fPIC\*(C'\fR). In HP-UX 11.00 or newer the linker
420error message should tell the name of the offending object file.
421.PP
422A more general approach is to intervene manually, as with an example for
423the DB_File module, which requires SleepyCat's libdb.sl:
424.PP
425.Vb 7
426\& # cd .../db-3.2.9/build_unix
427\& # vi Makefile
428\& ... add +Z to all cflags to create shared objects
429\& CFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \e
430\& -I/usr/local/include -I/usr/include/X11R6
431\& CXXFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \e
432\& -I/usr/local/include -I/usr/include/X11R6
433.Ve
434.PP
435.Vb 11
436\& # make clean
437\& # make
438\& # mkdir tmp
439\& # cd tmp
440\& # ar x ../libdb.a
441\& # ld -b -o libdb-3.2.sl *.o
442\& # mv libdb-3.2.sl /usr/local/lib
443\& # rm *.o
444\& # cd /usr/local/lib
445\& # rm -f libdb.sl
446\& # ln -s libdb-3.2.sl libdb.sl
447.Ve
448.PP
449.Vb 6
450\& # cd .../DB_File-1.76
451\& # make distclean
452\& # perl Makefile.PL
453\& # make
454\& # make test
455\& # make install
456.Ve
457.PP
458As of db\-4.2.x it is no longer needed to do this by hand. Sleepycat
459has changed the configuration process to add +z on HP-UX automatically.
460.PP
461.Vb 2
462\& # cd .../db-4.2.25/build_unix
463\& # env CFLAGS=+DA2.0w LDFLAGS=+DA2.0w ../dist/configure
464.Ve
465.PP
466should work to generate 64bit shared libraries for HP-UX 11.00 and 11i.
467.PP
468It is no longer possible to link PA-RISC 1.0 shared libraries (even
469though the command-line flags are still present).
470.PP
471PA-RISC and Itanium object files are not interchangeable. Although
472you may be able to use ar to create an archive library of PA-RISC
473object files on an Itanium system, you cannot link against it using
474an Itanium link editor.
475.Sh "The \s-1HP\s0 \s-1ANSI\s0 C Compiler"
476.IX Subsection "The HP ANSI C Compiler"
477When using this compiler to build Perl, you should make sure that the
478flag \-Aa is added to the cpprun and cppstdin variables in the config.sh
479file (though see the section on 64\-bit perl below). If you are using a
480recent version of the Perl distribution, these flags are set automatically.
481.Sh "The \s-1GNU\s0 C Compiler"
482.IX Subsection "The GNU C Compiler"
483When you are going to use the \s-1GNU\s0 C compiler (gcc), and you don't have
484gcc yet, you can either build it yourself from the sources (available
485from e.g. http://www.gnu.ai.mit.edu/software/gcc/releases.html) or fetch
486a prebuilt binary from the \s-1HP\s0 porting center. There are two places where
487gcc prebuilds can be fetched; the first and best (for HP-UX 11 only) is
488http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,547,00.html
489the second is http://hpux.cs.utah.edu/hppd/hpux/Gnu/ where you can also
490find the \s-1GNU\s0 binutils package. (Browse through the list, because there
491are often multiple versions of the same package available).
492.PP
493Above mentioned distributions are depots. H.Merijn Brand has made prebuilt
494gcc binaries available on http://mirrors.develooper.com/hpux/ and/or
495http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, and HP-UX 11.11
496(\s-1HP\-UX\s0 11i) in both 32\- and 64\-bit versions. These are bzipped tar archives
497that also include recent \s-1GNU\s0 binutils and \s-1GNU\s0 gdb. Read the instructions
498on that page to rebuild gcc using itself.
499.PP
500On PA-RISC you need a different compiler for 32\-bit applications and for
50164\-bit applications. On \s-1PA\-RISC\s0, 32\-bit objects and 64\-bit objects do
502not mix. Period. There is no different behaviour for \s-1HP\s0 C\-ANSI-C or \s-1GNU\s0
503gcc. So if you require your perl binary to use 64\-bit libraries, like
504Oracle\-64bit, you \s-1MUST\s0 build a 64\-bit perl.
505.PP
506Building a 64\-bit capable gcc on PA-RISC from source is possible only when
507you have the \s-1HP\s0 C\-ANSI C compiler or an already working 64\-bit binary of
508gcc available. Best performance for perl is achieved with \s-1HP\s0's native
509compiler.
510.Sh "Using Large Files with Perl on HP-UX"
511.IX Subsection "Using Large Files with Perl on HP-UX"
512Beginning with HP-UX version 10.20, files larger than 2GB (2^31 bytes)
513may be created and manipulated. Three separate methods of doing this
514are available. Of these methods, the best method for Perl is to compile
515using the \-Duselargefiles flag to Configure. This causes Perl to be
516compiled using structures and functions in which these are 64 bits wide,
517rather than 32 bits wide. (Note that this will only work with \s-1HP\s0's \s-1ANSI\s0
518C compiler. If you want to compile Perl using gcc, you will have to get
519a version of the compiler that supports 64\-bit operations. See above for
520where to find it.)
521.PP
522There are some drawbacks to this approach. One is that any extension
523which calls any file-manipulating C function will need to be recompiled
524(just follow the usual \*(L"perl Makefile.PL; make; make test; make install\*(R"
525procedure).
526.PP
527The list of functions that will need to recompiled is:
528creat, fgetpos, fopen,
529freopen, fsetpos, fstat,
530fstatvfs, fstatvfsdev, ftruncate,
531ftw, lockf, lseek,
532lstat, mmap, nftw,
533open, prealloc, stat,
534statvfs, statvfsdev, tmpfile,
535truncate, getrlimit, setrlimit
536.PP
537Another drawback is only valid for Perl versions before 5.6.0. This
538drawback is that the seek and tell functions (both the builtin version
539and \s-1POSIX\s0 module version) will not perform correctly.
540.PP
541It is strongly recommended that you use this flag when you run
542Configure. If you do not do this, but later answer the question about
543large files when Configure asks you, you may get a configuration that
544cannot be compiled, or that does not function as expected.
545.Sh "Threaded Perl on HP-UX"
546.IX Subsection "Threaded Perl on HP-UX"
547It is possible to compile a version of threaded Perl on any version of
548HP-UX before 10.30, but it is strongly suggested that you be running on
549HP-UX 11.00 at least.
550.PP
551To compile Perl with threads, add \-Dusethreads to the arguments of
552Configure. Verify that the \-D_POSIX_C_SOURCE=199506L compiler flag is
553automatically added to the list of flags. Also make sure that \-lpthread
554is listed before \-lc in the list of libraries to link Perl with. The
555hints provided for HP-UX during Configure will try very hard to get
556this right for you.
557.PP
558HP-UX versions before 10.30 require a separate installation of a \s-1POSIX\s0
559threads library package. Two examples are the \s-1HP\s0 \s-1DCE\s0 package, available
560on \*(L"\s-1HP\-UX\s0 Hardware Extensions 3.0, Install and Core \s-1OS\s0, Release 10.20,
561April 1999 (B3920\-13941)\*(R" or the Freely available \s-1PTH\s0 package, available
562on H.Merijn's site (http://mirrors.develooper.com/hpux/).
563.PP
564If you are going to use the \s-1HP\s0 \s-1DCE\s0 package, the library used for threading
565is /usr/lib/libcma.sl, but there have been multiple updates of that
566library over time. Perl will build with the first version, but it
567will not pass the test suite. Older Oracle versions might be a compelling
568reason not to update that library, otherwise please find a newer version
569in one of the following patches: \s-1PHSS_19739\s0, \s-1PHSS_20608\s0, or \s-1PHSS_23672\s0
570.PP
571reformatted output:
572.PP
573.Vb 14
574\& d3:/usr/lib 106 > what libcma-*.1
575\& libcma-00000.1:
576\& HP DCE/9000 1.5 Module: libcma.sl (Export)
577\& Date: Apr 29 1996 22:11:24
578\& libcma-19739.1:
579\& HP DCE/9000 1.5 PHSS_19739-40 Module: libcma.sl (Export)
580\& Date: Sep 4 1999 01:59:07
581\& libcma-20608.1:
582\& HP DCE/9000 1.5 PHSS_20608 Module: libcma.1 (Export)
583\& Date: Dec 8 1999 18:41:23
584\& libcma-23672.1:
585\& HP DCE/9000 1.5 PHSS_23672 Module: libcma.1 (Export)
586\& Date: Apr 9 2001 10:01:06
587\& d3:/usr/lib 107 >
588.Ve
589.PP
590If you choose for the \s-1PTH\s0 package, use swinstall to install pth in
591the default location (/opt/pth), and then make symbolic links to the
592libraries from /usr/lib
593.PP
594.Vb 2
595\& # cd /usr/lib
596\& # ln -s /opt/pth/lib/libpth* .
597.Ve
598.PP
599For building perl to support Oracle, it needs to be linked with libcl
600and libpthread. So even if your perl is an unthreaded build, these
601libraries might be required. See \*(L"Oracle on \s-1HP\-UX\s0\*(R" below.
602.Sh "64\-bit Perl on HP-UX"
603.IX Subsection "64-bit Perl on HP-UX"
604Beginning with HP-UX 11.00, programs compiled under HP-UX can take
605advantage of the \s-1LP64\s0 programming environment (\s-1LP64\s0 means Longs and
606Pointers are 64 bits wide), in which scalar variables will be able
607to hold numbers larger than 2^32 with complete precision. Perl has
608proven to be consistent and reliable in 64bit mode since 5.8.1 on
609all HP-UX 11.xx.
610.PP
611As of the date of this document, Perl is fully 64\-bit compliant on
612HP-UX 11.00 and up for both cc\- and gcc builds. If you are about to
613build a 64\-bit perl with \s-1GNU\s0 gcc, please read the gcc section carefully.
614.PP
615Should a user have the need for compiling Perl in the \s-1LP64\s0 environment,
616use the \-Duse64bitall flag to Configure. This will force Perl to be
617compiled in a pure \s-1LP64\s0 environment (with the +DD64 flag for \s-1HP\s0 C\-ANSI\-C,
618with no additional options for \s-1GNU\s0 gcc 64\-bit on \s-1PA\-RISC\s0, and with
619\&\-mlp64 for \s-1GNU\s0 gcc on Itanium).
620If you want to compile Perl using gcc, you will have to get a version of
621the compiler that supports 64\-bit operations.)
622.PP
623You can also use the \-Duse64bitint flag to Configure. Although there
624are some minor differences between compiling Perl with this flag versus
625the \-Duse64bitall flag, they should not be noticeable from a Perl user's
626perspective. When configuring \-Duse64bitint using a 64bit gcc on a
627pa-risc architecture, \-Duse64bitint is silently promoted to \-Duse64bitall.
628.PP
629In both cases, it is strongly recommended that you use these flags when
630you run Configure. If you do not use do this, but later answer the
631questions about 64\-bit numbers when Configure asks you, you may get a
632configuration that cannot be compiled, or that does not function as
633expected.
634.Sh "Oracle on HP-UX"
635.IX Subsection "Oracle on HP-UX"
636Using perl to connect to Oracle databases through \s-1DBI\s0 and DBD::Oracle
637has caused a lot of people many headaches. Read \s-1README\s0.hpux in the
638DBD::Oracle for much more information. The reason to mention it here
639is that Oracle requires a perl built with libcl and libpthread, the
640latter even when perl is build without threads. Building perl using
641all defaults, but still enabling to build DBD::Oracle later on can be
642achieved using
643.PP
644.Vb 1
645\& Configure -A prepend:libswanted='cl pthread ' ...
646.Ve
647.PP
648Do not forget the space before the trailing quote.
649.PP
650Also note that this does not (yet) work with all configurations,
651it is known to fail with 64\-bit versions of \s-1GCC\s0.
652.Sh "\s-1GDBM\s0 and Threads on HP-UX"
653.IX Subsection "GDBM and Threads on HP-UX"
654If you attempt to compile Perl with threads on an 11.X system and also
655link in the \s-1GDBM\s0 library, then Perl will immediately core dump when it
656starts up. The only workaround at this point is to relink the \s-1GDBM\s0
657library under 11.X, then relink it into Perl.
658.Sh "\s-1NFS\s0 filesystems and \fIutime\fP\|(2) on HP-UX"
659.IX Subsection "NFS filesystems and utime on HP-UX"
660If you are compiling Perl on a remotely-mounted \s-1NFS\s0 filesystem, the test
661io/fs.t may fail on test #18. This appears to be a bug in HP-UX and no
662fix is currently available.
663.Sh "perl \-P and // and HP-UX"
664.IX Subsection "perl -P and // and HP-UX"
665If HP-UX Perl is compiled with flags that will cause problems if the
666\&\-P flag of Perl (preprocess Perl code with the C preprocessor before
667perl sees it) is used. The problem is that \f(CW\*(C`//\*(C'\fR, being a \*(C+\-style
668until-end-of-line comment, will disappear along with the remainder
669of the line. This means that common Perl constructs like
670.PP
671.Vb 1
672\& s/foo//;
673.Ve
674.PP
675will turn into illegal code
676.PP
677.Vb 1
678\& s/foo
679.Ve
680.PP
681The workaround is to use some other quoting separator than \f(CW"/"\fR,
682like for example \f(CW"!"\fR:
683.PP
684.Vb 1
685\& s!foo!!;
686.Ve
687.Sh "HP-UX Kernel Parameters (maxdsiz) for Compiling Perl"
688.IX Subsection "HP-UX Kernel Parameters (maxdsiz) for Compiling Perl"
689By default, HP-UX comes configured with a maximum data segment size of
69064MB. This is too small to correctly compile Perl with the maximum
691optimization levels. You can increase the size of the maxdsiz kernel
692parameter through the use of \s-1SAM\s0.
693.PP
694When using the \s-1GUI\s0 version of \s-1SAM\s0, click on the Kernel Configuration
695icon, then the Configurable Parameters icon. Scroll down and select
696the maxdsiz line. From the Actions menu, select the Modify Configurable
697Parameter item. Insert the new formula into the Formula/Value box.
698Then follow the instructions to rebuild your kernel and reboot your
699system.
700.PP
701In general, a value of 256MB (or \*(L"256*1024*1024\*(R") is sufficient for
702Perl to compile at maximum optimization.
703.SH "nss_delete core dump from op/pwent or op/grent"
704.IX Header "nss_delete core dump from op/pwent or op/grent"
705You may get a bus error core dump from the op/pwent or op/grent
706tests. If compiled with \-g you will see a stack trace much like
707the following:
708.PP
709.Vb 10
710\& #0 0xc004216c in () from /usr/lib/libc.2
711\& #1 0xc00d7550 in __nss_src_state_destr () from /usr/lib/libc.2
712\& #2 0xc00d7768 in __nss_src_state_destr () from /usr/lib/libc.2
713\& #3 0xc00d78a8 in nss_delete () from /usr/lib/libc.2
714\& #4 0xc01126d8 in endpwent () from /usr/lib/libc.2
715\& #5 0xd1950 in Perl_pp_epwent () from ./perl
716\& #6 0x94d3c in Perl_runops_standard () from ./perl
717\& #7 0x23728 in S_run_body () from ./perl
718\& #8 0x23428 in perl_run () from ./perl
719\& #9 0x2005c in main () from ./perl
720.Ve
721.PP
722The key here is the \f(CW\*(C`nss_delete\*(C'\fR call. One workaround for this
723bug seems to be to create add to the file \fI/etc/nsswitch.conf\fR
724(at least) the following lines
725.PP
726.Vb 2
727\& group: files
728\& passwd: files
729.Ve
730.PP
731Whether you are using \s-1NIS\s0 does not matter. Amazingly enough,
732the same bug also affects Solaris.
733.SH "AUTHOR"
734.IX Header "AUTHOR"
735Jeff Okamoto <okamoto@corp.hp.com>
736H.Merijn Brand <h.m.brand@xs4all.nl>
737.PP
738With much assistance regarding shared libraries from Marc Sabatella.
739.SH "DATE"
740.IX Header "DATE"
741Version 0.7.6: 2005\-12\-20