Integrate:
authorRainer Tammer <tammer@tammer.net>
Tue, 2 Dec 2008 11:10:35 +0000 (12:10 +0100)
committerNicholas Clark <nick@ccl4.org>
Sat, 6 Dec 2008 13:13:47 +0000 (13:13 +0000)
[ 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..)

Makefile.SH
README.aix

index ea54201..0bdb681 100644 (file)
@@ -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
 
index 7390503..c7c67c6 100644 (file)
@@ -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