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