<div dir="ltr">On Tue, Aug 19, 2008 at 7:42 PM, Matthew Fluet <span dir="ltr">&lt;<a href="mailto:fluet@tti-c.org">fluet@tti-c.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">ld: foo.0.o has local relocation entries in non-writable section (__TEXT,__text)<br></div></blockquote><div class="Ih2E3d">That&#39;s because the i386 assembly isn&#39;t PIC, and osx requires PIC libraries</div>
</blockquote>
Well, I just wanted the compiler to build. &nbsp;I don&#39;t have any need for MLton generated dynamically linked shared libraries on MacOS X.<font color="#888888"></font></blockquote><div><br>Ahh, sorry the &#39;.hidden&#39; broke normal compilation on osx. That&#39;s my bad. Thanks for the fix.<br>
<br>I&#39;m currently in paper-deadline-before-vacation-pressure-mode, so I haven&#39;t gotten to finishing the PIC for amd64 external calls or PIC of any kind for i386. The amd64 stuff seems easy and I&#39;ll get to it soon. Like I discussed with you earlier, i386 is quite a bit harder, particularly because %esp is not usable in MLton assembly.<br>
<br>Why is %ebp used for the ML stack anyway? Since %esp gets pushed into c_stackP, I&#39;d have thought %esp would be perfectly fine for use as the ML stack too. Would it be safe to push 4 bytes to the ML stack, if %esp were pointing at it? ie, could I do this:<br>
<div style="margin-left: 40px;">call tmp_label<br>tmp_label: pop %eax<br>mov gcState-tmp_label+someOffsetIntoGcState(%eax),%eax<br></div>to load a value out of the gcState array into %eax? The concern is that I need to be sure that those 4 bytes at %esp are available. I don&#39;t really understand how the limit checking of the ML stack works.<br>
</div></div></div>