[MLton] Problem with MinGW

Wesley W. Terpstra terpstra@gkec.informatik.tu-darmstadt.de
Thu, 8 Jun 2006 23:29:04 +0200


--Apple-Mail-4--303747109
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed

>> Oddly, now it works. Perhaps something was changed between then  
>> and now?
> I don't believe that anything significant has changed.

Hmm. Well, maybe my build tree got corrupted by the broken open  
somehow. I started out today with a fresh copy and manually stopped  
the build after the first stage compiler was available.

> The codegens are very different outside the Basis Library.

I know this, of course. I just thought that as a windows system call  
was returning a different error code, that the methods called before  
it must be different. I presumed that the codegen doesn't  
particularly influence the runtime methods invoked.

>> The parameters passed to the open3 method are identical in both  
>> cases. The only difference is the stack. The first argument is 00  
>> aligned for the C codegen, and 1a aligned for the native codgen.  
>> However, I think this should be ok... right?
>
> Maybe yes, maybe no.  Could MinGW have a different calling  
> convention than x86-linux and x86-cygwin?  In particular, does  
> MinGW demand different stack alignment.  I could see that causing a  
> problem very much like that which we are seeing.

This is indeed the problem!

MinGW functions seem perfectly happy with a stack aligned on 2 bytes.  
However, some windows system calls (not all) fail when called this  
way. The MinGW code also appears to preserve 4 byte alignment, so if  
you call a MinGW compiled method (Posix_FileSys_open3) with offset 2,  
6, a, or c, then the windows system call gets it too.

I added an extra pushw into the assembler surrounding the call to  
open3, and it fixes the problem. Therefore, you need to have function  
calls 4 byte aligned in windows. Here's an example output assembler  
file, and my modified version (which works).



--Apple-Mail-4--303747109
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
	x-unix-mode=0755;
	name="test.orig.0.S.gz"
Content-Disposition: attachment;
	filename=test.orig.0.S.gz

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
FC//D1jWDMqTxAIA

--Apple-Mail-4--303747109
Content-Transfer-Encoding: quoted-printable
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="test.diff.0.S"
Content-Disposition: attachment;
	filename=test.diff.0.S

***=20test.orig.0.S=09Thu=20Jun=20=208=2023:25:45=202006=0A---=20=
test.wes.0.S=09Thu=20Jun=20=208=2023:24:41=202006=0A***************=0A=
***=201,9=20****=0A=20=20/*=20MLton=20MLTONVERSION=20(built=20Thu=20Jun=20=
08=2013:37:28=202006=20on=20unknown)=20*/=0D=0A!=20/*=20=20=20created=20=
this=20file=20on=20Thu=20Jun=2008=2023:11:55=202006.=20*/=0D=0A=20=20/*=20=
Do=20not=20edit=20this=20file.=20*/=0D=0A=20=20/*=20Flag=20settings:=20=20=
*/=0D=0A=20=20/*=20=20=20=20align:=204=20*/=0D=0A!=20/*=20=20=20=20=
atMLtons:=20(test.exe,=20@MLton,=20--)=20*/=0D=0A=20=20/*=20=20=20=20=
chunk:=20chunk=20per=20function=20*/=0D=0A=20=20/*=20=20=20=20codegen:=20=
Native=20*/=0D=0A=20=20/*=20=20=20=20contifyIntoMain:=20false=20*/=0D=0A=
---=201,9=20----=0A=20=20/*=20MLton=20MLTONVERSION=20(built=20Thu=20Jun=20=
08=2013:37:28=202006=20on=20unknown)=20*/=0D=0A!=20/*=20=20=20created=20=
this=20file=20on=20Thu=20Jun=2008=2023:05:56=202006.=20*/=0D=0A=20=20/*=20=
Do=20not=20edit=20this=20file.=20*/=0D=0A=20=20/*=20Flag=20settings:=20=20=
*/=0D=0A=20=20/*=20=20=20=20align:=204=20*/=0D=0A!=20/*=20=20=20=20=
atMLtons:=20(test,=20@MLton,=20--)=20*/=0D=0A=20=20/*=20=20=20=20chunk:=20=
chunk=20per=20function=20*/=0D=0A=20=20/*=20=20=20=20codegen:=20Native=20=
*/=0D=0A=20=20/*=20=20=20=20contifyIntoMain:=20false=20*/=0D=0A=
***************=0A***=2095,101=20****=0A=20=20/*=20=20=20=20target=20=
arch:=20X86=20*/=0D=0A=20=20/*=20=20=20=20target=20OS:=20MinGW=20*/=0D=0A=
=20=20/*=20=20=20=20type=20check:=20false=20*/=0D=0A!=20/*=20=20=20=20=
verbosity:=20Detail=20*/=0D=0A=20=20/*=20=20=20=20warn=20unrecognized=20=
annotation:=20true=20*/=0D=0A=20=20/*=20=20=20=20xmlPassesSet:=20=
<xmlPassesSet>=20*/=0D=0A=20=20/*=20=20=20=20xmlPasses:=20[default]=20*/=0D=
=0A---=2095,101=20----=0A=20=20/*=20=20=20=20target=20arch:=20X86=20*/=0D=
=0A=20=20/*=20=20=20=20target=20OS:=20MinGW=20*/=0D=0A=20=20/*=20=20=20=20=
type=20check:=20false=20*/=0D=0A!=20/*=20=20=20=20verbosity:=20Silent=20=
*/=0D=0A=20=20/*=20=20=20=20warn=20unrecognized=20annotation:=20true=20=
*/=0D=0A=20=20/*=20=20=20=20xmlPassesSet:=20<xmlPassesSet>=20*/=0D=0A=20=20=
/*=20=20=20=20xmlPasses:=20[default]=20*/=0D=0A***************=0A***=20=
1795,1800=20****=0A---=201795,1801=20----=0A=20=20=09movl=20=
(_c_stackP+(0*4)),%edi=0D=0A=20=20=09xchgl=20%edi,%esp=0D=0A=20=20=09=
pushw=20$0x0=0D=0A+=20=09pushw=20$0x0=0D=0A=20=20=09pushl=20=
(0+((0*1)+(0*1)))(%esi)=0D=0A=20=20=09pushl=20(0+((4*1)+(0*1)))(%esi)=0D=0A=
=20=20=09addl=20$12,%ebp=0D=0A***************=0A***=201802,1808=20****=0A=
=20=20=09movl=20%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$10,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A---=201803,1809=20----=0A=20=20=09movl=20=
%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$12,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A***************=0A***=202058,2063=20=
****=0A---=202059,2065=20----=0A=20=20=09movl=20(_c_stackP+(0*4)),%edi=0D=
=0A=20=20=09xchgl=20%edi,%esp=0D=0A=20=20=09pushw=20$0x0=0D=0A+=20=09=
pushw=20$0x0=0D=0A=20=20=09pushl=20(0+((0*1)+(0*1)))(%esi)=0D=0A=20=20=09=
pushl=20(0+((4*1)+(0*1)))(%esi)=0D=0A=20=20=09addl=20$4,%ebp=0D=0A=
***************=0A***=202065,2071=20****=0A=20=20=09movl=20=
%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$10,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A---=202067,2073=20----=0A=20=20=09movl=20=
%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$12,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A***************=0A***=202377,2382=20=
****=0A---=202379,2385=20----=0A=20=20=09movl=20(_c_stackP+(0*4)),%edi=0D=
=0A=20=20=09xchgl=20%edi,%esp=0D=0A=20=20=09pushw=20$0x0=0D=0A+=20=09=
pushw=20$0x0=0D=0A=20=20=09pushl=20(0+((0*1)+(0*1)))(%esi)=0D=0A=20=20=09=
pushl=20(0+((4*1)+(0*1)))(%esi)=0D=0A=20=20=09addl=20$8,%ebp=0D=0A=
***************=0A***=202384,2390=20****=0A=20=20=09movl=20=
%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$10,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A---=202387,2393=20----=0A=20=20=09movl=20=
%ebp,((_gcState+552)+(0*4))=0D=0A=20=20=09movl=20=
%edi,((_gcState+304)+(0*4))=0D=0A=20=20=09call=20_Posix_FileSys_open3=0D=0A=
!=20=09addl=20$12,%esp=0D=0A=20=20=09movl=20((_gcState+304)+(0*4)),%esi=0D=
=0A=20=20=09xchgl=20%esi,%esp=0D=0A=20=20=09movl=20=
((_gcState+552)+(0*4)),%ebp=0D=0A=

--Apple-Mail-4--303747109--