Change 31445 by [EMAIL PROTECTED] on 2007/06/22 14:55:47
Subject: [perl #43291] perl-5.8.8 - AIX 5.3 64bit build issues
From: Niklas Edmundsson (via RT) <[EMAIL PROTECTED]>
Date: Fri, 22 Jun 2007 00:30:36 -0700
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/perl/hints/aix.sh#107 edit
Differences ...
==== //depot/perl/hints/aix.sh#107 (text) ====
Index: perl/hints/aix.sh
--- perl/hints/aix.sh#106~29777~ 2007-01-12 07:15:13.000000000 -0800
+++ perl/hints/aix.sh 2007-06-22 07:55:47.000000000 -0700
@@ -309,8 +309,36 @@
;;
esac
+ # -bmaxdata:0x80000000
+ # - This increases the size of heap memory available to perl.
+ # Default is 256 MB, which sounds large but caused a software
+ # vendor problems. So this sets heap to 2 GB maximum. Anything
+ # higher and you'd want to consider 64 bit perl.
+ # - NOTE however, that setting this in 64bit mode will limit your
+ # amount of available memory to 2GB, so we set this only in
+ # 32bit mode to avoid future problems a la "should be enough
+ # for everyone" ...
+ #
+ case "$use64bitall" in
+ $define|true|[yY]*)
+ :
+ ;;
+ *)
+ ldflags="$ldflags -bmaxdata:0x80000000"
+ ;;
+ esac
+
case "$gccversion" in
- '') ;;
+ '') # Not using gcc.
+ # Due to calling $cc without $cflags when linking some
+ # binaries we need to hardwire $cc to the right mode.
+ # The correct fix would be to have Makefile.SH not set
+ # CLDFLAGS from $ldflags ...
+ case "$use64bitall" in
+ $define|true|[yY]*) cc="$cc -q64" ;;
+ *) cc="$cc -q32" ;;
+ esac
+ ;;
*) # Remove xlc-specific -qflags.
ccflags="`echo $ccflags | sed -e 's@ -q[^ ]*@ @g' -e '[EMAIL
PROTECTED] ]* @@g'`"
ldflags="`echo $ldflags | sed -e 's@ -q[^ ]*@ @g' -e '[EMAIL
PROTECTED] ]* @@g'`"
@@ -319,9 +347,18 @@
ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,[EMAIL
PROTECTED]'`"
lddlflags="`echo ' '$lddlflags | sed -e 's@ -b@ -Wl,[EMAIL
PROTECTED]'`"
lddlflags="`echo ' '$lddlflags | sed -e 's@ -G @ -Wl,-G @g'`"
+
+ # Due to calling $cc without $cflags when linking some
+ # binaries we need to hardwire $cc to the right mode.
case "$use64bitall" in
- $define|true|[yY]*) ld="$cc -maix64" ;;
- *) ld="$cc" ;;
+ $define|true|[yY]*)
+ cc="$cc -maix64"
+ ld="$cc"
+ ;;
+ *)
+ cc="$cc -maix32"
+ ld="$cc"
+ ;;
esac
echo >&4 "(using ccflags $ccflags)"
echo >&4 "(using ldflags $ldflags)"
@@ -401,13 +438,10 @@
trylist="`echo $trylist | sed -e '[EMAIL PROTECTED] @@' -e 's@ ar @ @g'
-e 's@ ar$@@'`"
ar="ar -X64"
nm_opt="-X64 $nm_opt"
- # Note: Placing the 'qacflags' variable into the 'ldflags' string
- # is NOT a typo. ldflags is passed to the C compiler for final
- # linking, and it wants -q64 (-b64 is for ld only!).
case "$qacflags$qaldflags$qalibs" in
'') ;;
*) ccflags="$ccflags $qacflags"
- ldflags="$ldflags $qacflags"
+ ldflags="$ldflags"
lddlflags="$qaldflags $lddlflags"
libswanted="$libswanted $qalibs"
;;
@@ -435,14 +469,9 @@
# ".so"-suffix libraries as well as ".a" suffix
# libraries. AIX allows both .so and .a libraries to
# contain dynamic shared objects.
- # -bmaxdata:0x80000000 This increases the size of heap memory available
- # to perl. Default is 256 MB, which sounds large but
- # caused a software vendor problems. So this sets
- # heap to 2 GB maximum. Anything higher and you'd
- # want to consider 64 bit perl.
case "$cc" in
- *gcc*) ldflags="$ldflags -Wl,-brtl -Wl,-bdynamic
-Wl,-bmaxdata:0x80000000" ;;
- *) ldflags="$ldflags -brtl -bdynamic -bmaxdata:0x80000000" ;;
+ *gcc*) ldflags="$ldflags -Wl,-brtl -Wl,-bdynamic" ;;
+ *) ldflags="$ldflags -brtl -bdynamic" ;;
esac
elif test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then
# If the C++ libraries, libC and libC_r, are available we will
End of Patch.