X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Firix_6.sh;h=61eac6e214f0fd8fd183da9478652de1e768054c;hb=0fa156b9cc6e57c94350bf8b3486af3d1c7dd41d;hp=3344808440e67629de62f2accb6b5c1b426bb0a9;hpb=2a3be124a967e8b8c2b63eba4b01fc25cc9ee755;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/irix_6.sh b/hints/irix_6.sh index 3344808..61eac6e 100644 --- a/hints/irix_6.sh +++ b/hints/irix_6.sh @@ -32,6 +32,14 @@ # Don't bother with -n32 unless you have the 7.1 or later compilers. # But there's no quick and light-weight way to check in 6.2. +# NOTE: some IRIX cc versions, e.g. 7.3.1.1m (try cc -version) have +# been known to have issues (coredumps) when compiling perl.c. +# If you've used -OPT:fast_io=ON and this happens, try removing it. +# If that fails, or you didn't use that, then try adjusting other +# optimization options (-LNO, -INLINE, -O3 to -O2, etcetera). +# The compiler bug has been reported to SGI. +# -- Allen Smith + # Let's assume we want to use 'cc -n32' by default, unless the # necessary libm is missing (which has happened at least twice) case "$cc" in @@ -40,7 +48,13 @@ case "$cc" in *) test -f /usr/lib32/libm.so && cc='cc -n32' ;; esac esac -test -z "$cc" && cc=cc + +cc=${cc:-cc} + +case "$cc" in +*gcc*) ;; +*) ccversion=`cc -version 2>&1` ;; +esac case "$use64bitint" in $define|true|[yY]*) @@ -77,9 +91,19 @@ esac case "$cc" in *"cc -n32"*) - libscheck='case "`/usr/bin/file $xxx`" in -*N32*) ;; -*) xxx=/no/n32$xxx ;; + # If a library is requested to link against, make sure the + # objects in the library are of the same ABI we are compiling + # against. Albert Chin-A-Young + libscheck='case "$xxx" in +*.a) /bin/ar p $xxx `/bin/ar t $xxx | /usr/bsd/head -1` >$$.o; + case "`/usr/bin/file $$.o`" in + *N32*) rm -f $$.o ;; + *) rm -f $$.o; xxx=/no/n32$xxx ;; + esac ;; +*) case "`/usr/bin/file $xxx`" in + *N32*) ;; + *) xxx=/no/n32$xxx ;; + esac ;; esac' # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker @@ -93,7 +117,7 @@ esac' libc='/usr/lib32/libc.so' plibpth='/usr/lib32 /lib32 /usr/ccs/lib' ;; -*"cc -64") +*"cc -64"*) loclibpth="$loclibpth /usr/lib64" libscheck='case "`/usr/bin/file $xxx`" in @@ -138,16 +162,31 @@ esac # Settings common to both native compiler modes. case "$cc" in -*"cc -n32"|*"cc -64") +*"cc -n32"*|*"cc -64"*) ld=$cc # perl's malloc can return improperly aligned buffer - # usemymalloc='undef' -malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' + # which (under 5.6.0RC1) leads into really bizarre bus errors + # and freak test failures (lib/safe1 #18, for example), + # even more so with -Duse64bitall: for example lib/io_linenumtb. + # fails under the harness but succeeds when run separately, + # under make test pragma/warnings #98 fails, and lib/io_dir + # apparently coredumps (the last two don't happen under + # the harness. Helmut Jarausch is seeing bus errors from + # miniperl, as was Scott Henry with snapshots from just before + # the RC1. --jhi + usemymalloc='undef' +#malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' nm_opt='-p' nm_so_opt='-p' + # Warnings to turn off because the source code hasn't + # been cleaned up enough yet to satisfy the IRIX cc. + # 1184: "=" is used where where "==" may have been intended. + # 1552: The variable "foobar" is set but never used. + woff=1184,1552 + # Perl 5.004_57 introduced new qsort code into pp_ctl.c that # makes IRIX cc prior to 7.2.1 to emit bad code. # so some serious hackery follows to set pp_ctl flags correctly. @@ -155,11 +194,11 @@ malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' # Check for which version of the compiler we're running case "`$cc -version 2>&1`" in *7.0*) # Mongoose 7.0 - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1042,1048,1110,1116,1174,1184,1552 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0" optimize='none' ;; *7.1*|*7.2|*7.20) # Mongoose 7.1+ - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0" optimize='-O3' # This is a temporary fix for 5.005. # Leave pp_ctl_cflags line at left margin for Configure. See @@ -168,15 +207,15 @@ malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' pp_ctl_cflags='optimize=-O' ;; *7.*) # Mongoose 7.2.1+ - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0:space=ON" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0:space=ON" optimize='-O3' ;; *6.2*) # Ragnarok 6.2 - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff" optimize='none' ;; *) # Be safe and not optimize - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0" optimize='none' ;; esac @@ -207,8 +246,10 @@ esac # Don't groan about unused libraries. ldflags="$ldflags -Wl,-woff,84" -case "`uname -s`-`$cc -version 2>&1`" in -IRIX64-*7.2.*) op_cflags='optimize=-O1' ;; # workaround for an optimizer bug +# workaround for an optimizer bug +case "`$cc -version 2>&1`" in +*7.2.*) op_cflags='optimize=-O1'; opmini_cflags='optimize=-O1' ;; +*7.3.1.*) op_cflags='optimize=-O2'; opmini_cflags='optimize=-O2' ;; esac # We don't want these libraries. @@ -299,3 +340,15 @@ EOCBU # The -n32 makes off_t to be 8 bytes, so we should have largefileness. +# Until we figure out what to be probe for in Configure (ditto for hpux.sh) +case "$usemorebits" in # Need to expand this now, then. +$define|true|[yY]*) use64bitint="$define"; uselongdouble="$define" ;; +esac +case "$use64bitint" in +$define|true|[yY]*) ;; +*) d_casti32='undef' ;; +esac + +# Helmut Jarausch reports that Perl's malloc is rather unusable +# with IRIX, and SGI confirms the problem. +usemymalloc=${usemymalloc:-false}