David,

Thanks for that.

If I do:

./configure --build=x86_64-darwin

then make works, but make cvs then fails like this:

make  all-recursive
Making all in libpolyml
make[2]: Nothing to be done for `all'.
Making all in libpolymain
make[2]: Nothing to be done for `all'.
make[2]: Nothing to be done for `all-am'.
./poly -H 10 < mlsource/BuildExport.sml
/bin/sh: line 1: 18804 Bus error               ./poly -H 10 <
mlsource/BuildExport.sml
make: *** [compiler] Error 138

If I do:

./configure --build=x86_64-darwin  LDFLAGS='-segprot POLY rwx rwx'

then everything works (but as you predict I also have to put -segprot POLY
rwx rwx in the steps in my make files that link a poly program.

If I do:

./configure CFLAGS='-arch i386'

It fails on x86_dep.lo just as it does with no extra settings.

Regards,

Rob.


> [email protected] wrote:
>> My first attempt to compile Poly/ML 5.2.1 on Snow Leopard (= MacOS X
>> 10.6)
>> resulted in an error due to a cast of a pointer to an int in
>> libpolyml/x86_dep.cpp. There is a fix for this in the latest source, but
>> the build then falls over as follows:
>
> Rob,
> I had an email about this from Peter Homeier.  Since I don't have access
> to a machine running this I can't test it directly.  My feeling is that
> it is building the 64-bit version by default.  Try
> grep SIZEOF_VOIDP config.h
> and see what it says.
> I have managed to build the 64-bit version on an older version of Mac OS
> X with the following:
> ./configure --build=x86_64-darwin CFLAGS='-arch x86_64 -O3' \
> CXXFLAGS='-arch x86_64 -O3' CCASFLAGS='-arch x86_64' \
> LDFLAGS='-segprot POLY rwx rwx'
>
> This may work on 10.6.  If so, some of the arguments may not actually be
> necessary and I'd like to know exactly which.  I would expect that the
> CFLAGS, CXXFLAGS and CCASFLAGS can all be omitted if it is defaulting to
> 64-bit anyway.  The LDFLAGS wasn't needed for the build itself but
> without it the resulting poly executable would SEGFAULT as soon as it
> was run.  The problem was that the linker was ignoring the access rights
> in the object file itself and removing execute permission.  This doesn't
> have any effect in 32-bit mode but in 64-bit mode it seems the processor
> was respecting the no-execute flag and failing.  If this is needed it
> will have to be provided on any link step with your own code.
>
> It may be possible to force 32-bit mode with
> ./configure CFLAGS='-arch i386 -O3' CXXFLAGS='-arch i386 -O3' \
> CCASFLAGS='-arch i386'
>
> Regards,
> David
>


_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to