X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Firix_6.sh;h=32335a0bb8bb699b4c1026c319583e1b28fe157c;hb=f2766b05f6136cc9e8c8812afdbe7a31657a110d;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..32335a0 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` ;; +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 @@ -142,8 +166,17 @@ case "$cc" in 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' @@ -207,8 +240,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.