X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Firix_6.sh;h=32335a0bb8bb699b4c1026c319583e1b28fe157c;hb=f2766b05f6136cc9e8c8812afdbe7a31657a110d;hp=d14ac93af696702b219c9e00e83274d8eb436e11;hpb=a3489f112e627d5729974d69f2b9f825769e52b7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/irix_6.sh b/hints/irix_6.sh index d14ac93..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 @@ -41,6 +49,13 @@ case "$cc" in esac esac +cc=${cc:-cc} + +case "$cc" in +*gcc*) ;; +*) ccversion=`cc -version` ;; +esac + case "$use64bitint" in $define|true|[yY]*) case "`uname -r`" in @@ -76,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 @@ -141,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' @@ -206,6 +240,12 @@ esac # Don't groan about unused libraries. ldflags="$ldflags -Wl,-woff,84" +# 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. # Socket networking is in libc, these are not installed by default, # and just slow perl down. (scotth@sgi.com)