[MLton] GMP patch: MinGW/win64 port
Wesley W. Terpstra
wesley at terpstra.ca
Sat Dec 8 15:58:35 PST 2007
With the small attached patch, GMP compiles on MinGW/win64 using the
latest cross compiler. The patch fixes the assumption that 'long = 64
bits' on all intel 64 bit platforms. Under win64, long remains 32 bit
< pointer size. Also, the ABI for windows differs from linux, so the
patch disables linux-specific assembly, using the generic C instead.
The successful compile used the prebuilt cross-compiler mingw-w64-
bin_i686_mings32_20071020.tar.bz2 with
./configure --build=athlon64-pc-mingw32 --host=x86_64-pc-mingw32 --
enable-alloca=malloc-reentrant
It is necessary to use 'malloc-reentrant' to forbid use of alloca,
which appears to be broken under win64.
make check succeeds except for the tests t-locale and t-printf.
t-locale fails to compile because it tries to replace an imported
function with a local copy of localeconv. Probably GMP shouldn't do
this.
t-printf fails because the win64 printf ignores the high 32 bits of
%llu.
In short, after this patch is applied, the remaining problems aren't
GMP's fault.
I've CC'd the MLton list as this patch is relevant to a 64-bit windows
port.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gmp-mingw64.patch
Type: application/octet-stream
Size: 5362 bytes
Desc: not available
Url : http://mlton.org/pipermail/mlton/attachments/20071209/82027f68/gmp-mingw64.obj
-------------- next part --------------
More information about the MLton
mailing list