diff options
author | Rainer Tammer <tammer@tammer.net> | 2008-12-02 12:10:35 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-12-06 13:13:47 +0000 |
commit | 45f03b425229c1a63224150ca8bbaf52883d0f86 (patch) | |
tree | 17cea2e6d00335126cb44d5e2884270f5c5906c8 | |
parent | 3261ad7329b65185f52d3e32917c19b459a7d511 (diff) | |
download | perl-45f03b425229c1a63224150ca8bbaf52883d0f86.tar.gz |
Integrate:
[ 31976]
Option spelling nit for AIX
[ 35031]
Integrate:
[ 34983]
Unwind change 31976 then apply
Subject: Re: 5.8.9 RC1 / 5.10.x / bleed patches for gcc / AIX
Message-ID: <4935099B.8060004@tammer.net>
Date: Tue, 02 Dec 2008 11:10:35 +0100
[ 35007]
Subject: AIX patches for Perl 5.8.9 RC2 and gcc on AIX + suidperl on AIX README.aix
From: Rainer Tammer <tammer@tammer.net>
Message-ID: <4937A39B.1070104@tammer.net>
Date: Thu, 04 Dec 2008 10:32:11 +0100
[the rest, including unwinding change 34983 first]
p4raw-link: @35031 on //depot/maint-5.10/perl: 248c54478c218b0661c49f8977cfeb2adf339dc8
p4raw-link: @35007 on //depot/perl: fe5460cc78b3fdb133dac6113fd062486cbde848
p4raw-link: @34983 on //depot/perl: 21efc95700e8bb4aff8b05f9b9541dde292aec92
p4raw-link: @31976 on //depot/perl: 6f47696963057ac118d1f5f49ebe66a858dd9e42
p4raw-id: //depot/maint-5.8/perl@35033
p4raw-integrated: from //depot/maint-5.10/perl@35032 'edit in'
Makefile.SH (@34791..) 'merge in' README.aix (@34992..)
p4raw-integrated: from //depot/perl@31976 'edit in' Makefile.SH
(@31878..)
-rw-r--r-- | Makefile.SH | 45 | ||||
-rw-r--r-- | README.aix | 86 |
2 files changed, 98 insertions, 33 deletions
diff --git a/Makefile.SH b/Makefile.SH index ea54201893..0bdb681209 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -36,6 +36,7 @@ case "$d_dosuid" in esac linklibperl='$(LIBPERL)' +linklibperl_nonshr='' shrpldflags='$(LDDLFLAGS)' ldlibpth='' DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB' @@ -81,15 +82,32 @@ true) shrpldflags="$shrpldflags -Wl,--image-base,0x57000000" ;; aix*) - shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" - case "$osvers" in - 3*) shrpldflags="$shrpldflags -e _nostart" + case "$cc" in + gcc*) + shrpldflags="-shared -Wl,-H512 -Wl,-T512 -Wl,-bhalt:4 -Wl,-bM:SRE -Wl,-bE:perl.exp" + case "$osvers" in + 3*) shrpldflags="$shrpldflags -e _nostart" + ;; + *) shrpldflags="$shrpldflags -Wl,-bnoentry" + ;; + esac + shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + linklibperl_nonshr='-lperl_nonshr' ;; - *) shrpldflags="$shrpldflags -b noentry" + *) + shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" + case "$osvers" in + 3*) shrpldflags="$shrpldflags -e _nostart" + ;; + *) shrpldflags="$shrpldflags -b noentry" + ;; + esac + shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + linklibperl_nonshr='-lperl_nonshr' ;; esac - shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" - linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" ;; hpux*) linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl" @@ -239,6 +257,7 @@ DLSUFFIX = .$dlext PLDLFLAGS = $pldlflags LIBPERL = $libperl LLIBPERL= $linklibperl +LLIBPERL_NONSHR= $linklibperl_nonshr SHRPENV = $shrpenv # Static targets are ordinarily built without CCCDLFLAGS. However, @@ -807,10 +826,24 @@ microperl: # checks as well as the special code to validate that the script in question # has been invoked correctly. +!NO!SUBS! + +case "${osname}" in +aix*) +$spitshell >>Makefile <<'!NO!SUBS!' +suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) + $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL_NONSHR) $(LLIBPERL) `cat ext.libs` $(libs) + +!NO!SUBS! +;; +*) +$spitshell >>Makefile <<'!NO!SUBS!' suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) !NO!SUBS! +;; +esac fi diff --git a/README.aix b/README.aix index 73905031a5..c7c67c6d0a 100644 --- a/README.aix +++ b/README.aix @@ -36,34 +36,55 @@ XL C and XL C/C++ V7, V8, V9, V10 The XL C for AIX is integrated in the XL C/C++ for AIX compiler. -If you choose XL C/C++ V9 you need APAR IZ35785 installed -otherwise the integrated SDBM_File do not compile correctly due -to an optimization bug. You can circumvent this problem by -adding -qipa to the optimization flags (-Doptimize='-O -qipa'). -The PTF for APAR IZ35785 which solves this problem will be available +If you choose XL C/C++ V9 you need APAR IZ35785 installed +otherwise the integrated SDBM_File do not compile correctly due +to an optimization bug. You can circumvent this problem by +adding -qipa to the optimization flags (-Doptimize='-O -qipa'). +The PTF for APAR IZ35785 which solves this problem will be available in 1Q 2009. IBM does provide an emergency fix for this problem. -Perl can be compiled with either IBM's ANSI C compiler or with gcc. -The former is recommended, as not only it can compile Perl with no -difficulty, but also can take advantage of features listed later +Perl can be compiled with either IBM's ANSI C compiler or with gcc. +The former is recommended, as not only it can compile Perl with no +difficulty, but also can take advantage of features listed later that require the use of IBM compiler-specific command-line flags. -If you decide to use gcc, make sure your installation is recent and -complete, and be sure to read the Perl INSTALL file for more gcc-specific -details. Please report any hoops you had to jump through to the +If you decide to use gcc, make sure your installation is recent and +complete, and be sure to read the Perl INSTALL file for more gcc-specific +details. Please report any hoops you had to jump through to the development team. +=head2 Perl 5.8.9 was successfully compiled and tested on: + + AIX Level | Compiler Level | w th | w/o th + --------------------------+-------------------------+------+------- + 5.1 TL9 32 bit | XL C/C++ V7 | OK | OK + 5.1 TL9 32 bit | gcc 3.2.2 | OK | OK + 5.1 TL9 64 bit | XL C/C++ V7 | OK | OK + 5.2 TL10 32 bit | XL C/C++ V8 | OK | OK + 5.2 TL10 64 bit | XL C/C++ V8 | OK | OK + 5.3 TL7 32 bit | XL C/C++ V9 + IZ35785 | OK | OK + 5.3 TL7 32 bit | gcc 4.2.4 | OK | OK + 5.3 TL7 64 bit | XL C/C++ V9 + IZ35785 | OK | OK + 6.1 TL1 32 bit | XL C/C++ V10 | OK | OK + 6.1 TL1 64 bit + IZ39077 | XL C/C++ V10 | OK | OK + + w th = with thread + w/o th = without thread + +Successfully tested means that all make test runs with an result of 100% OK. +All tests were conducted with -Duseshrplib set. + =head2 Building Dynamic Extensions on AIX -Starting from Perl 5.7.2 (and consequently 5.8.x / 5.10.x) and AIX 4.3 -or newer Perl uses the AIX native dynamic loading interface in the so -called runtime linking mode instead of the emulated interface that was -used in Perl releases 5.6.1 and earlier or, for AIX releases 4.2 and -earlier. This change does break backward compatibility with compiled -modules from earlier Perl releases. The change was made to make Perl -more compliant with other applications like Apache/mod_perl which are -using the AIX native interface. This change also enables the use of -C++ code with static constructors and destructors in Perl extensions, +Starting from Perl 5.7.2 (and consequently 5.8.x / 5.10.x) and AIX 4.3 +or newer Perl uses the AIX native dynamic loading interface in the so +called runtime linking mode instead of the emulated interface that was +used in Perl releases 5.6.1 and earlier or, for AIX releases 4.2 and +earlier. This change does break backward compatibility with compiled +modules from earlier Perl releases. The change was made to make Perl +more compliant with other applications like Apache/mod_perl which are +using the AIX native interface. This change also enables the use of +C++ code with static constructors and destructors in Perl extensions, which was not possible using the emulated interface. It is highly recommended to use the new interface. @@ -115,12 +136,12 @@ configuration for the perl builds that AIX ships with. -Dusethreads \ -Dprefix=/usr/opt/perl5_32 -The -Dprefix option will install Perl in a directory parallel to the +The -Dprefix option will install Perl in a directory parallel to the IBM AIX system Perl installation. =head2 Recommended Options AIX 5.1/5.2/5.3 and 6.1 (32-bit) -With the following options you get a Perl version which passes +With the following options you get a Perl version which passes all make tests in 32-bit mode. rm config.sh @@ -151,11 +172,11 @@ passes all make tests in 64-bit mode. =head2 Recommended Options AIX 5.1/5.2/5.3 and 6.1(64-bit) -With the following options you get a Perl version which passes all -make tests in 64-bit mode. +With the following options you get a Perl version which passes all +make tests in 64-bit mode. export OBJECT_MODE=64 / setenv OBJECT_MODE 64 (depending on your shell) - + rm config.sh ./Configure \ -d \ @@ -164,10 +185,21 @@ make tests in 64-bit mode. -Duse64bitall \ -Dprefix=/usr/opt/perl5_64 -The -Dprefix option will install Perl in a directory parallel to the +The -Dprefix option will install Perl in a directory parallel to the IBM AIX system Perl installation. -=head2 Compiling Perl 5 on older AIX +If you choose gcc to compile 64-bit Perl then you need to use the +following options: + + -Dcc='gcc -maix64' + + +=head2 Compiling Perl 5 on older AIX versions up to 4.3.3 + +Due to the fact that AIX 4.3.3 reached end-of-service in December 31, +2003 this information is provided as is. The Perl versions prior to +Perl 5.8.9 could be compiled on AIX up to 4.3.3 with the following +settings (your mileage may vary): When compiling Perl, you must use an ANSI C compiler. AIX does not ship an ANSI compliant C-compiler with AIX by default, but binary builds of |