<DIV>Hi,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I have succesfully compiled gmp-4.1.4 on Windows 2000 MinGw MSYS system.</DIV>
<DIV>&nbsp;</DIV>
<DIV>./configure --enable-shared --disable-static</DIV>
<DIV>&nbsp;</DIV>
<DIV>I then imported the DLL library to Borland C Builder6 by following following steps</DIV>
<DIV>&nbsp;</DIV>
<DIV>1. renamed libgmp-3.dll to gmp.dll&nbsp; (Borland hates "-" in file names) and copied to my project directory.</DIV>
<DIV>2. under Command Prompt</DIV>
<DIV>2.a&nbsp; &gt; impdef gmp.def gmp.dll</DIV>
<DIV>2.b&nbsp; &gt; implib gmp.lib gmp.def</DIV>
<DIV>3. needless to say gmp.h also needs to be copied to a place that Cbuilder6 can find it.</DIV>
<DIV>&nbsp;</DIV>
<DIV>In Borland C Builder6 added gmp.lib to Project .</DIV>
<DIV>&nbsp;</DIV>
<DIV>Using C Builder6 I set following options&nbsp; Menu [project][options]</DIV>
<DIV>Compiler Tab </DIV>
<DIV>&nbsp; - Code optimization&nbsp; - speed</DIV>
<DIV>Advanced Compiler Tab </DIV>
<DIV>&nbsp; - Instruction Set - Pentium</DIV>
<DIV>&nbsp; - Calling conventions - Standard</DIV>
<DIV>&nbsp;</DIV>
<DIV>The program compiles and links properly but&nbsp; if gmp calls are in a loop then a stack overflow is reported after 83000 loops of below code.</DIV>
<DIV>&nbsp;</DIV>
<DIV>while (1)<BR>&nbsp;{</DIV>
<DIV>&nbsp;&nbsp;&nbsp; &nbsp;mpz_mul_ui(n,n,1227750359) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpz_div_ui(n,n,1227750359) ;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++ ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((count % 1000) ==1)&nbsp;&nbsp; {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "count = "&lt;&lt;count&nbsp; &lt;&lt;"\n"&nbsp; ;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;</DIV>
<DIV>Adding following code resets the stack and program can loop indefinately,&nbsp;a non elageant brute force method to work around the problem.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;test = 1&nbsp;&nbsp; ;<BR>&nbsp;while (test)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp; test = setjmp( envbuf );<BR>&nbsp;}</DIV>
<DIV>&nbsp;while (1)<BR>&nbsp;{</DIV>
<DIV>&nbsp;&nbsp;&nbsp; &nbsp;mpz_mul_ui(n,n,1227750359L);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpz_div_ui(n,n,1227750359L);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++ ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((count % 1000) ==1)&nbsp;&nbsp; {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "count = "&lt;&lt;count&nbsp; &lt;&lt;"\n"&nbsp; ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; longjmp( envbuf, -1 );</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR></DIV>
<DIV>The same program compiled under MinGW MSYS and using gcc and the static libraries (a seperate gmp build) does not have the same problems.</DIV>
<DIV>&nbsp;</DIV>
<DIV>My question:</DIV>
<DIV>&nbsp;</DIV>
<DIV>Is there a Borland calling incompatibility to the DLL libary or a DLL bug that the stack grows.</DIV>
<DIV>&nbsp;</DIV>
<DIV>best regards</DIV>
<DIV>Anton</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>