develooper Front page | perl.perl5.porters | Postings from September 2012

Re: unhappy darwin -Dusemorebits (was Re: Smoke [5.17.4]v5.17.3-184-g699aa44 FAIL(F) darwin 12.1.0 (Intel Core 2 Duo/))

From:
Tony Cook
Date:
September 5, 2012 01:07
Subject:
Re: unhappy darwin -Dusemorebits (was Re: Smoke [5.17.4]v5.17.3-184-g699aa44 FAIL(F) darwin 12.1.0 (Intel Core 2 Duo/))
Message ID:
20120905080703.GA27723@mars.tony.develop-help.com
On Tue, Sep 04, 2012 at 10:02:45AM -0400, Andy Dougherty wrote:
> On Tue, 4 Sep 2012, Nicholas Clark wrote:
> 
> > On Sun, Sep 02, 2012 at 10:04:03AM +1000, Tony Cook wrote:
> > > On Sun, Sep 02, 2012 at 09:28:04AM +1000, Tony Cook wrote:
> > > > neptune:perl tony$ grep alignbytes config.sh
> > > > alignbytes='8'
> > > 
> > > Even if I set -Dalignbytes=16, it's ignored, because of:
> > > 
> > > #if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
> > > #  define MEM_ALIGNBYTES 8
> > > #else
> > > #define MEM_ALIGNBYTES 16
> > > #endif
> > > 
> > > This appears to have been this way since the dawn of (metaconfig)
> > > time.
> 
> Just verifying -- If you change that first 8 to a 16, does it work?

I tested removing the first branch of the #if combined with
-Dalignbytes=16, which worked.

> > So we should (at least) file this as a bug in RT, as it *is* a bug in our
> > code, we don't want it to get lost, and we don't have a good idea how to
> > fix it correctly?
> 
> Probably.  I think I see how I want to try to fix this, but I'm not 
> certain I'll finish it today.
> 
> My first thought is that something like this is probably what's needed.  
> I haven't tried it out yet, nor gone back through the metaconfig units to
> see what I've forgotten, but this might be worth taking for a spin:
> 
> diff --git a/Configure b/Configure
> index a1ba981..7fa1804 100755
> --- a/Configure
> +++ b/Configure
> @@ -19022,11 +19022,10 @@ Revision='$Revision'
>  
>  : check for alignment requirements
>  echo " "
> -case "$usecrosscompile$multiarch" in
> +case "$usecrosscompile" in
>  *$define*)
>  	$cat <<EOM
> -You seem to be either cross-compiling or doing a multiarchitecture build,
> -skipping the memory alignment check.
> +You seem to be cross-compiling.  Skipping the memory alignment check.
>  
>  EOM
>  	case "$alignbytes" in
> @@ -19064,6 +19063,17 @@ EOCP
>  			dflt='8'
>  			echo "(I can't seem to compile the test program...)"
>  		fi
> +		case "$multiarch" in
> +		*$define*)
> +			: The usual safe value is 8, but Darwin with -Duselongdouble
> +			: needs 16.  Hence, we will take 8 as a minimum, but allow
> +			: Configure to pick a larger value if needed.
> +			if $test "$dflt" -lt 8; then
> +			    dflt='8'
> +				echo "Setting alignment to 8 for multiarch support.">&4
> +			fi
> +			;;
> +		esac
>  		;;
>  	*) dflt="$alignbytes"
>  		;;
> diff --git a/config_h.SH b/config_h.SH
> index 988273f..ff8436c 100755
> --- a/config_h.SH
> +++ b/config_h.SH
> @@ -951,11 +951,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
>   *	double, or a long double when applicable. Usual values are 2,
>   *	4 and 8. The default is eight, for safety.
>   */
> -#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
> -#  define MEM_ALIGNBYTES 8
> -#else
>  #define MEM_ALIGNBYTES $alignbytes
> -#endif
>  
>  /* ARCHLIB:
>   *	This variable, if defined, holds the name of the directory in

This worked, passing all tests except porting/regen.t (since the
canned config files aren't updated.)

neptune:perl tony$ ./Configure -des -Dusedevel -DDEBUGGING -Duseithreads -Dusemorebits && make -j2 && TEST_JOBS=2 make test_harness
...
../lib/warnings.t ................................................. ok       

Test Summary Report
-------------------
porting/regen.t                                                 (Wstat: 0 Tests: 31 Failed: 1)
  Failed test:  6
../cpan/CGI/t/tmpdir.t                                          (Wstat: 0 Tests: 9 Failed: 0)
  TODO passed:   3-9
Files=2336, Tests=558690, 978 wallclock secs (90.80 usr 11.85 sys + 762.70 cusr 79.31 csys = 944.66 CPU)
Result: FAIL
make: *** [test_harness] Error 1
neptune:perl tony$ grep -i ALIGNBYTES config.sh config.h
config.sh:alignbytes='16'
config.h:/* MEM_ALIGNBYTES:
config.h:#define MEM_ALIGNBYTES 16

Tony



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About