<div class="gmail_quote"><div>Its an OK compromise.  It used to work fine.  The VM keeps those symbols it doesn&#39;t want to export to plugins private (static) and makes public only those it wants them to see.  So having public symbols visible is fine.  It isn&#39;t as clean with Cog.  There is a broad API used to interconnect the CoInterpreter and the Cogit, lots of which plugins have no business seeing.  But then plugins don&#39;t access them, and in fact it might be useful if some could (e.g. NativeBoost).  The problems come when there are conflicts between VM symbols and those in arbitrary code.  But this is worrying about an unlikely scenario that we can deal with when it arrives.  Use -fvisibility=default until you get problems.  If it ain&#39;t broke, don&#39;t fix it.</div>
<div><br></div><div>best</div><div>Eliot</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
&gt;<br>
&gt; Cheers,<br>
&gt; Esteban<br>
&gt;<br>
&gt;<br>
&gt; El 12/04/2011, a las 10:34p.m., Eliot Miranda escribi?:<br>
<div class="im">&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Tue, Apr 12, 2011 at 6:30 PM, Esteban Lorenzano &lt;<a href="mailto:estebanlm@gmail.com">estebanlm@gmail.com</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; Hi Eliot,<br>
&gt; &gt; yes... I need it, because cocoa cog vm is compiled with: -fvisibility=hidden, and so I need to explicitly export functions/variables I want to use outside. I could change the visibility, but I&#39;m not sure if this is a good idea.<br>

&gt; &gt;<br>
&gt; &gt; If you must, you must.  You can include specific declarations in the class-side declareCVarsIn: methods, e.g. StackInterpreter class&gt;&gt; declareCVarsIn:.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Cheers,<br>
&gt; &gt; Esteban<br>
&gt; &gt;<br>
</div>&gt; &gt; El 12/04/2011, a las 9:17p.m., Eliot Miranda escribi?:<br>
<div><div></div><div class="h5">&gt; &gt;<br>
&gt; &gt;&gt; Hi Esteban,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Tue, Apr 12, 2011 at 5:03 PM, Esteban Lorenzano &lt;<a href="mailto:estebanlm@gmail.com">estebanlm@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Hi,<br>
&gt; &gt;&gt; I&#39;m trying to compile new IA32ABI plugin, who should work with new Threaded FFI.<br>
&gt; &gt;&gt; As everybody requested, I&#39;m trying to compile this plugin as an external plugin, and for that reason I need variable<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; sqInt inIOProcessEvents;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; to be<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; EXPORT(sqInt) inIOProcessEvents;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; ...how can I modify VMMaker to ensure this?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Um, are you sure you need to.  If you have a look at <a href="http://www.squeakvm.org/svn/squeak/branches/Cog" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog</a> r2378 you&#39;ll see that  inIOProcessEvents is declared in cointerpmt.c and that IA32ABI.c imports it via<br>

&gt; &gt;&gt;<br>
&gt; &gt;&gt; src/plugins/IA32ABI/IA32ABI.c:  { extern int inIOProcessEvents; address = (sqInt)&amp;inIOProcessEvents; }<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Doesn&#39;t that work?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; best,<br>
&gt; &gt;&gt; Eliot<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; I tried touching StackInterpreter&gt;&gt;#mustBeGlobal:, but that generates bad code on gcc3x-cointerpmt.c (it creates GIV(inIOProcessEvents) calls and that does not work)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; so... any idea?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; thanks,<br>
&gt; &gt;&gt; Esteban<br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br>